参照型変数における "ref" の役割を理解する
C# でクラスなどの参照型変数を操作する場合、参照を渡すこととコピーを渡すことの違いを理解することが重要です。値型変数を参照渡し (「ref」キーワードを使用) すると元の変数へのリンクが作成されますが、動作は参照型では若干異なります。
参照型の場合でも、 「ref」キーワードを指定しないと、メソッドに渡される変数はすでに参照になります。ただし、「ref」キーワードは特定のシナリオで重要になります。これにより、メソッドが参照自体を変更できるようになり、変数が指すオブジェクトが変更されます。
例と分析
次の例を考えてみましょう:
var x = new Foo(); // Without "ref" void Bar(Foo y) { y.Name = "2"; } // With "ref" void Bar(ref Foo y) { y.Name = "2"; }
どちらの場合も、「Bar」メソッドは「x」への参照を受け取ります。これにより、そのプロパティを変更できるようになります (この場合、「Name」プロパティを「2」に設定します)。ただし、「ref」キーワードを使用すると、追加の可能性が生じます。
参照の再割り当て
「ref」キーワードを使用すると、「Bar」に対して次のことが可能になります。別のオブジェクトを参照するように「y」変数を再割り当てするメソッド。これは、次のコードで示されています。
Foo foo = new Foo("1"); void Bar(ref Foo y) { y = new Foo("2"); } Bar(ref foo); // foo.Name == "2"
「Bar」メソッドでは、「y」変数は最初は「foo」オブジェクトへの参照です。ただし、「ref」キーワードを使用すると、「y」変数は、「Name」が「2」で新しく作成された「Foo」オブジェクトを参照するように再割り当てされます。その結果、「Bar」メソッドが返されると、「foo」変数も新しい「Foo」オブジェクトを指します。
「ref」キーワードのこの機能により、外部メソッドがオブジェクトの内容を動的に変更できるようになります。参照は を指しているため、変数の再割り当てが必要なシナリオで便利なツールになります。
以上が`ref` キーワードは C# の参照型変数の動作にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。