2013-05-18 55 views
4

基本上,我有一個非常大的byte[]和一類輔助函數。將大數據傳遞到C#函數的最佳方式是什麼?

我是否正確地考慮如果我打電話Helpers.HelperFunc(mybigbytearray),mybigbytearray將被複制到內存中?

如果是這樣,什麼是給一個大變量函數的最佳方式(指針看起來不錯,但正在助手功能unsafe明智?請問垃圾收集器仍然工作?)

回答

8

陣列,就像在其他對象C#,通過引用傳遞,因此數組內的數據將不會被複制;將數組傳遞給的函數將具有對原始數組的引用。


Arrays as Objects (C# Programming Guide)

在C#,數組實際上對象,並且如在C和C++的連續存儲器的不只是可尋址區域。 System.Array是所有數組類型的抽象基類型。

Passing Arrays as Arguments (C# Programming Guide)

陣列可以作爲參數方法參數傳遞。由於數組是引用類型,因此該方法可以更改元素的值。

+0

很好的答案,謝謝。 – James

相關問題