Die Bedeutung von „ref“ für Referenztyp-Variablen in C#
C#-Programmierer stoßen häufig auf das Schlüsselwort „ref“, wenn sie mit Referenzen arbeiten -Typ-Variablen, wie zum Beispiel Klassen. Während das Verhalten von „ref“ mit Werttypen bekannt ist, ist sein Zweck für Referenztypen möglicherweise weniger klar.
Hintergrund
Bei der Übergabe eines Werts -type nach Wert ohne das Schlüsselwort „ref“ wird eine Kopie der Variablen erstellt und an die Methode übergeben. Allerdings beinhaltet die Übergabe von Referenztypen ohne „ref“ bereits die Referenzierung der Variablen selbst.
Verwendung von „ref“ mit Referenztypen
Also, was ist der Vorteil der Verwendung von „ref“ mit Referenztypen? Der Hauptunterschied liegt in der Möglichkeit, die Referenz der Variablen neu zuzuweisen.
Beispiel
Betrachten Sie das folgende Beispiel:
var x = new Foo(); // Without "ref" void Bar(Foo y) { y.Name = "2"; } // With "ref" void Bar(ref Foo y) { y.Name = "2"; } // Test Bar(x);
Im ersten Fall , y ist ein Verweis auf x und durch Ändern von y.Name wird das Objekt aktualisiert. Im zweiten Fall können wir jedoch mit „ref“ etwas Einzigartiges tun.
Innerhalb der Bar-Methode können wir mit „ref“ die Referenz, auf die y zeigt, neu zuweisen. Zum Beispiel:
Foo foo = new Foo("1"); // Reassign reference via "ref" void Bar(ref Foo y) { y = new Foo("2"); } Bar(ref foo); // After Bar() call Console.WriteLine(foo.Name);
Hier weist der Aufruf von Bar(ref foo) foo effektiv eine neue Foo-Instanz zu. Das bedeutet, dass die ursprüngliche foo-Variable nun auf ein anderes Objekt mit dem Namen „2“ zeigt.
Fazit
Daher liefert „ref“ mit Referenztypen das Flexibilität, die Objektreferenz neu zuzuweisen, was erweiterte Szenarien ermöglicht, die sonst nicht möglich wären.
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!