4
基本上,我有一個非常大的byte[]
和一類輔助函數。將大數據傳遞到C#函數的最佳方式是什麼?
我是否正確地考慮如果我打電話Helpers.HelperFunc(mybigbytearray)
,mybigbytearray
將被複制到內存中?
如果是這樣,什麼是給一個大變量函數的最佳方式(指針看起來不錯,但正在助手功能unsafe
明智?請問垃圾收集器仍然工作?)
基本上,我有一個非常大的byte[]
和一類輔助函數。將大數據傳遞到C#函數的最佳方式是什麼?
我是否正確地考慮如果我打電話Helpers.HelperFunc(mybigbytearray)
,mybigbytearray
將被複制到內存中?
如果是這樣,什麼是給一個大變量函數的最佳方式(指針看起來不錯,但正在助手功能unsafe
明智?請問垃圾收集器仍然工作?)
陣列,就像在其他對象C#,通過引用傳遞,因此數組內的數據將不會被複制;將數組傳遞給的函數將具有對原始數組的引用。
從Arrays as Objects (C# Programming Guide)
在C#,數組實際上對象,並且如在C和C++的連續存儲器的不只是可尋址區域。 System.Array是所有數組類型的抽象基類型。
和Passing Arrays as Arguments (C# Programming Guide)
陣列可以作爲參數方法參數傳遞。由於數組是引用類型,因此該方法可以更改元素的值。
很好的答案,謝謝。 – James