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 时,流将关闭,但您的数组仍将包含数据。 您的数组可能为空的唯一方法是您的流不包含任何数据。