ホームページ >バックエンド開発 >C++ >C# の配列とリストは参照によって渡されますか? それとも値によって渡されますか?

C# の配列とリストは参照によって渡されますか? それとも値によって渡されますか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-10 10:51:45703ブラウズ

Are C# Arrays and Lists Passed by Reference or by Value?

C# の配列とリストはデフォルトで参照によって渡されますか?

配列とリストは C# の重要なデータ構造であり、関数に渡されたときのそれらの動作を理解することは効率的なコーディングにとって重要です。

それらは参照によって渡されますか?

いいえ、C# の配列とリストはデフォルトでは参照渡しされません。代わりに、参照値によって渡されます。これは、配列またはリストの内容に加えられた変更は呼び出し元に表示されますが、配列またはリスト自体への再割り当ては呼び出し元に反映されないことを意味します。

参照渡しをしてみませんか?

配列またはリストを参照によって渡すと、関数が呼び出されるたびに配列またはリスト全体の新しいコピーを作成する必要があるため、プログラムの実行が大幅に遅くなる可能性があります。このオーバーヘッドは、大規模なデータ セットの場合に特に顕著になります。

参照によって渡す場合

まれに、呼び出し元にコンテンツと参照自体の変更を確認させたい場合は、ref 修飾子を使用して参照によって明示的に参照を渡すことができます。ただし、これは複雑さや潜在的なエラーを引き起こす可能性があるため、注意して行う必要があります。

次のコードを考えてみましょう:

<code class="language-c#">void Foo(int[] data) {
    data[0] = 1; // 调用者可以看到此更改
}
void Bar(int[] data) {
    data = new int[20]; // 但看不到此更改
}</code>

最初の関数 Foo では、配列への参照が値によって渡されるため、配列の内容に加えられた変更は呼び出し元に表示されます。ただし、2 番目の関数 Bar では、参照自体が値によって渡されるため、配列の再割り当ては呼び出し側には見えません。

結論

ほとんどの場合、配列とリストを値で渡すと最高のパフォーマンスが得られ、エラーが発生するリスクが軽減されます。参照による受け渡しは、ref 修飾子を使用して、必要な場合にのみ明示的に行う必要があります。

以上がC# の配列とリストは参照によって渡されますか? それとも値によって渡されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。