我使用的内存流如下:
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?
返回的字节数组是通过引用传递还是通过值传递?
数组是Array
类的实例,因此它始终是一个引用,没有值。ToArray
从流中读取值,并将它们存储在新实例化的数组对象中。
这意味着在任何时候我都可能。。。空
没有。如上所述,您将返回一个新的数组实例,其中包含从流中读取的值。使用本地变量myData
时,不可能再次将其设置为null
。
这将是一个引用,但数据将存储在内存中的某个位置。所以当"myMethod"返回时,流将被关闭,但您的数组仍将包含数据。数组可以为null的唯一方法是流不包含任何数据。