C# の配列とリスト: 参照渡しですか、それとも値渡しですか?
C# では、配列とリストは値によって渡されます。これは、これらのデータ構造を引数としてメソッドまたは関数に渡すとき、それらへの参照のコピーのみが渡されることを意味します。
値によって渡されます:
.NET では、配列とリストはヒープに格納されるオブジェクトです。これらのオブジェクトが引数として渡されると、メモリ内のそれらの場所への参照がコピーされます。これは、配列またはリストの内容に加えられた変更が呼び出し元によって監視可能であることを意味します。ただし、配列またはリスト自体を再割り当てした場合 (つまり、参照を変更した場合)、これらの変更は呼び出し元によって検出されません。
例:
<code class="language-c#">void Foo(int[] data) { data[0] = 1; // 调用方可以看到此更改 } void Bar(int[] data) { data = new int[20]; // 调用方看不到此更改 }</code>
参照渡しには ref を使用します:
呼び出し元にコンテンツの変更と参照の再割り当ての両方を監視させる必要がある場合は、ref 修飾子を使用できます。これにより、参照が参照によって渡され、参照自体に加えられた変更が呼び出し元に確実に表示されます。
ref の使用例:
<code class="language-c#">void Foo(ref int[] data) { data[0] = 1; // 调用方可以看到此更改 data = new int[20]; // 调用方也可以看到此更改 }</code>
したがって、C# では、配列とリストはデフォルトで値によって渡されます。参照自体を参照によって渡したい場合は、メソッドのシグネチャを変更して ref 修飾子を含めることができます。
以上がC# の配列とリストは値または参照によって渡されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。