4

基本的に、私は非常に大きなbyte[]クラスのヘルパー関数を持っています。

を呼び出すとHelpers.HelperFunc(mybigbytearray)mybigbytearrayがメモリに複製されると考えるのは正しいですか?

もしそうなら、関数に大きな変数を与える最良の方法は何ですか (ポインターは見栄えがしますが、ヘルパー関数をunsafe賢くしていますか? ガベージコレクターはまだ機能しますか?)

4

1 に答える 1

8

配列は、C# の他のオブジェクトと同様に、参照によって渡されるため、配列内のデータは複製されません。配列を渡す関数には、元の配列への参照があります。


オブジェクトとしての配列から(C# プログラミング ガイド)

C# では、配列は実際にはオブジェクトであり、C や C++ のように連続したメモリのアドレス可能な領域だけではありません。System.Array は、すべての配列型の抽象基本型です。

配列を引数として渡す (C# プログラミング ガイド)

配列は、引数としてメソッド パラメーターに渡すことができます。配列は参照型であるため、メソッドは要素の値を変更できます。

于 2013-05-18T12:52:56.767 に答える