基本上,我有一个非常大的byte[]
和一类辅助函数。
我是否正确地思考如果我致电Helpers.HelperFunc(mybigbytearray)
,mybigbytearray
将在内存中重复?
如果是这样,给函数提供一个大变量的最佳方法是什么(指针看起来很好但是帮助函数unsafe
明智吗?垃圾收集器是否还能工作?)
答案 0 :(得分:8)
与C#中的其他对象一样,数组通过引用传递,因此数组中的数据不会被复制;传递数组的函数将引用原始数组。
来自Arrays as Objects (C# Programming Guide)
在C#中,数组实际上是对象,而不仅仅是C和C ++中连续内存的可寻址区域。 System.Array是所有数组类型的抽象基类型。
和Passing Arrays as Arguments (C# Programming Guide)
数组可以作为方法参数的参数传递。因为数组是引用类型,所以该方法可以更改元素的值。