C# での参照型変数での "ref" の使用を理解する
"ref" キーワードを使用すると、次のことが可能になることは明らかです。値型変数への参照を値で渡す場合、参照型でのその重要性はあまり明らかではないかもしれません。この記事では、参照型変数を使用した「ref」の具体的な使用例について説明します。
次のクラスを考えてみましょう。
public class Foo { public string Name; public Foo(string name) { Name = name; } }
参照型変数を値で渡すか、参照:
「ref」キーワードを使用せずに、参照型変数を渡します (例: "x") をメソッドに渡しても、コピーではなく参照が渡されます。これは、メソッドが元のオブジェクトに対して動作することを意味します。例:
var x = new Foo("1"); void Bar(Foo y) { y.Name = "2"; } Bar(x); // changes the Name property of the original object
「ref」を使用して参照型変数の参照を変更する:
ただし、参照型の「ref」キーワードは変数には特定の目的があります。これにより、メソッド内で変数の参照を変更できるようになります。例:
Foo foo = new Foo("1"); void Bar(ref Foo y) { y = new Foo("2"); // creates a new object and assigns it to y } Bar(ref foo); // changes the reference of 'foo' to point to the new object
この場合、「Bar(ref foo)」を呼び出した後、「foo」は元のオブジェクトを参照せず、代わりに Name プロパティ「2」を持つ新しく作成されたオブジェクトを参照します。 ".
実際の応用例:
この機能は、新しいデータを返したいシナリオで役立ちます。明示的に参照を out パラメーターとして返すことなく、メソッドからオブジェクトを取得できます。たとえば、特定の条件を満たすリスト内の最初の要素を検索して返すメソッドを作成できます。
public static T FindFirst<T>(List<T> list, Func<T, bool> predicate) where T : class { foreach (T item in list) { if (predicate(item)) return item; } return null; }
このメソッドで「ref」キーワードを使用すると、 out パラメータを使用しても、見つかったオブジェクトを返すことができます。
以上がC# で参照型変数に「ref」を使用する場合とその理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。