C# - 在处理流之前返回内存流的字节数组的效果?

时间:2016-03-31 12:06:09

标签: c# arrays stream dispose memorystream

我正在使用这样的内存流:

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 在我还在处理数据的任何时候?

2 个答案:

答案 0 :(得分:3)

  

返回的字节数组是通过引用还是按值传递的?

数组是Array类的实例,因此它始终是引用而没有值。 ToArray从流中读取值并将它们存储在新实例化的数组对象中。

  

这是否意味着我可能随时...... null

没有。如上所述,您将返回一个包含从流中读取的值的新数组实例。使用它时,您的本地变量myData不可能再次设置为null

答案 1 :(得分:0)

这将是一个参考,但您的数据将存储在您的内存中。 那么当" myMethod"将返回,流将被关闭但您的数组仍将包含数据。 数组可能为null的唯一方法是您的流不包含任何数据。