基本的に、私は非常に大きなbyte[]
クラスのヘルパー関数を持っています。
を呼び出すとHelpers.HelperFunc(mybigbytearray)
、mybigbytearray
がメモリに複製されると考えるのは正しいですか?
もしそうなら、関数に大きな変数を与える最良の方法は何ですか (ポインターは見栄えがしますが、ヘルパー関数をunsafe
賢くしていますか? ガベージコレクターはまだ機能しますか?)
基本的に、私は非常に大きなbyte[]
クラスのヘルパー関数を持っています。
を呼び出すとHelpers.HelperFunc(mybigbytearray)
、mybigbytearray
がメモリに複製されると考えるのは正しいですか?
もしそうなら、関数に大きな変数を与える最良の方法は何ですか (ポインターは見栄えがしますが、ヘルパー関数をunsafe
賢くしていますか? ガベージコレクターはまだ機能しますか?)
配列は、C# の他のオブジェクトと同様に、参照によって渡されるため、配列内のデータは複製されません。配列を渡す関数には、元の配列への参照があります。
オブジェクトとしての配列から(C# プログラミング ガイド)
C# では、配列は実際にはオブジェクトであり、C や C++ のように連続したメモリのアドレス可能な領域だけではありません。System.Array は、すべての配列型の抽象基本型です。
配列は、引数としてメソッド パラメーターに渡すことができます。配列は参照型であるため、メソッドは要素の値を変更できます。