Heim >Backend-Entwicklung >C++ >Wann und warum wird „ref' mit Referenztypen in C# verwendet?
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.
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.
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!