Heim > Backend-Entwicklung > C++ > Wann und warum wird „ref' mit Referenztypvariablen in C# verwendet?

Wann und warum wird „ref' mit Referenztypvariablen in C# verwendet?

Linda Hamilton
Freigeben: 2025-01-06 20:33:41
Original
308 Leute haben es durchsucht

When and Why Use

Verstehen der Verwendung von „ref“ mit Referenztypvariablen in C#

Obwohl klar ist, dass das Schlüsselwort „ref“ uns dies ermöglicht Wenn Sie einen Verweis auf Werttypvariablen nach Wert übergeben, ist seine Bedeutung bei Referenztypen möglicherweise weniger offensichtlich. In diesem Artikel werden die spezifischen Anwendungsfälle von „ref“ mit Variablen vom Referenztyp untersucht.

Betrachten Sie die folgende Klasse:

public class Foo
{
    public string Name;

    public Foo(string name)
    {
        Name = name;
    }
}
Nach dem Login kopieren

Übergabe einer Variablen vom Referenztyp nach Wert vs. Referenz:

Ohne das Schlüsselwort „ref“ wird beim Übergeben einer Referenztypvariablen (z. B. „x“) an eine Methode immer noch eine Referenz übergeben. keine Kopie. Dies bedeutet, dass die Methode das ursprüngliche Objekt bearbeitet. Zum Beispiel:

var x = new Foo("1");

void Bar(Foo y)
{
    y.Name = "2";
}

Bar(x); // changes the Name property of the original object
Nach dem Login kopieren

Verwenden von „ref“ zum Ändern der Referenz einer Referenztypvariablen:

Allerdings das Schlüsselwort „ref“ mit Referenztyp Variablen dienen einem bestimmten Zweck: Sie ermöglichen es uns, die Referenz der Variablen innerhalb der Methode zu ändern. Zum Beispiel:

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
Nach dem Login kopieren

In diesem Fall verweist „foo“ nach dem Aufruf von „Bar(ref foo)“ nicht mehr auf das ursprüngliche Objekt, sondern stattdessen auf das neu erstellte Objekt mit der Name-Eigenschaft „2 ".

Praktische Anwendung:

Diese Funktionalität kann in Szenarien nützlich sein, in denen wir ein neues Objekt von einer Methode zurückgeben möchten, ohne dies zu tun um die Referenz explizit als Out-Parameter zurückzugeben. Beispielsweise könnten wir eine Methode erstellen, die das erste Element in einer Liste findet und zurückgibt, das ein bestimmtes Kriterium erfüllt:

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;
}
Nach dem Login kopieren

Durch die Verwendung des Schlüsselworts „ref“ in dieser Methode können wir vermeiden, ein Element erstellen zu müssen out-Parameter, während das gefundene Objekt weiterhin zurückgegeben werden kann.

Das obige ist der detaillierte Inhalt vonWann und warum wird „ref' mit Referenztypvariablen in C# verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage