ホームページ > バックエンド開発 > C++ > C# で参照型変数に「ref」を使用する場合とその理由

C# で参照型変数に「ref」を使用する場合とその理由

Linda Hamilton
リリース: 2025-01-06 20:33:41
オリジナル
298 人が閲覧しました

When and Why Use

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート