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

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

Barbara Streisand
Barbara StreisandOriginal
2025-01-06 20:41:13517Durchsuche

When and Why Use `ref` with Reference Types in C#?

Verstehen der Rolle von „ref“ bei der Übergabe von Referenztypvariablen in C

In C# können Variablen entweder Werttypen oder Referenztypen sein. Bei der Übergabe von Werttypen an Methoden wird das Schlüsselwort ref verwendet, um das Verhalten zu ändern. Bei Referenztypen ist der Zweck von ref jedoch weniger intuitiv.

Das Standardverhalten bei der Übergabe von Referenztypen

In C# werden Referenztypen immer als Referenzen an Methoden übergeben, auch ohne das ref-Schlüsselwort. Dies bedeutet, dass Änderungen an der Referenz innerhalb der Methode Auswirkungen auf die ursprüngliche Variable außerhalb der Methode haben. Zur Veranschaulichung:

var x = new Foo();
void Bar(Foo y)
{
    y.Name = "2"; // Modification to the reference within the method
}

Bar(x);

Console.WriteLine(x.Name); // Output: "2"

Obwohl wir in diesem Beispiel x ohne das Schlüsselwort ref an die Bar-Methode übergeben, wird der Wert von x.Name dennoch geändert, was das Referenzübergabeverhalten von reference demonstriert. Typen.

Die einzigartige Rolle von „ref“ bei Referenztypen

Während das Schlüsselwort ref normalerweise nicht für die Übergabe von Referenztypen erforderlich ist, spielt es eine entscheidende Rolle Rolle in einem bestimmten Szenario: Neuzuweisung der Referenz selbst. Ohne ref wirken sich alle Änderungen innerhalb der Methode nur auf die lokale Referenz aus, die an die Methode übergeben wird, und lassen die ursprüngliche Variable unverändert. Mit ref können Sie jedoch die tatsächliche Referenz ändern, auf die die Variable verweist. Hier ist ein Beispiel:

Foo foo = new Foo("1");

void Bar(ref Foo y)
{
    y = new Foo("2"); // Reassigning the reference y points to
}

Bar(ref foo);

Console.WriteLine(foo.Name); // Output: "2"

In diesem Szenario ermöglicht uns das Schlüsselwort ref, die Referenz, auf die foo verweist, neu zuzuweisen und so den Wert von foo effektiv zu ändern.

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

Stellungnahme:
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