【发布时间】:2016-03-31 12:06:09
【问题描述】:
我正在使用这样的内存流:
public static byte[] myMethod()
{
using(MemoryStream stream = new MemoryStream())
{
//some processing here.
return stream.toArray();
}
}
我在调用者方法中分配返回的字节数组,如下所示:
public static void callerMethod()
{
byte[] myData = myMethod();
//Some processing on data array here
}
返回的字节数组是按引用传递还是按值传递?如果返回的数组是按引用的,这是否意味着我在任何时候都可能在 callerMethod 数组中有 myData 为 null 在我仍在处理数据的任何时候?
【问题讨论】:
-
字节数组应该如何改变'当你还在处理'?如果还没有分配,怎么改?
-
您在询问处理流后数组是否为空?那不会发生。
-
它是通过调用myMethod()分配的,我猜如果字节数组是通过引用返回的,它会改变,因为内存流对象现在将在执行退出后的任何时候成为GC的主题使用在被调用的方法中阻塞?
-
谢谢@Rinecamo,是的,这正是我所要求的。
-
ToArray() 返回一个新数组,其中填充了流数据,因此您可以安全地处理流而不会丢失数据数组
标签: c# arrays stream dispose memorystream