C# - 在处理流之前返回内存流字节数组的效果?
C# - Effect of returning byte array of memory stream just before disposing stream?
我正在使用这样的内存流:
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 在我还在处理数据的任何时候?
Is the returned byte array passed by reference or by value?
数组是 Array
class 的一个实例,因此它始终是一个引用,没有任何值。 ToArray
从流中读取值并将它们存储在新实例化的数组对象中。
does that mean at any time I may have ... null
没有。如上所述,您 return 一个包含从流中读取的值的新数组实例。当您使用它时,您的局部变量 myData
不可能再次设置为 null
。
这将是一个参考,但您的数据将存储在您的内存中的某个位置。
因此,当 "myMethod" 将 return 时,流将关闭,但您的数组仍将包含数据。
您的数组可能为空的唯一方法是您的流不包含任何数据。
我正在使用这样的内存流:
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 在我还在处理数据的任何时候?
Is the returned byte array passed by reference or by value?
数组是 Array
class 的一个实例,因此它始终是一个引用,没有任何值。 ToArray
从流中读取值并将它们存储在新实例化的数组对象中。
does that mean at any time I may have ... null
没有。如上所述,您 return 一个包含从流中读取的值的新数组实例。当您使用它时,您的局部变量 myData
不可能再次设置为 null
。
这将是一个参考,但您的数据将存储在您的内存中的某个位置。 因此,当 "myMethod" 将 return 时,流将关闭,但您的数组仍将包含数据。 您的数组可能为空的唯一方法是您的流不包含任何数据。