Nutzung von „ref“ für Referenztyp-Variablen in C#
In C# übergeben Referenztyp-Variablen, wie z. B. Klassen, von Natur aus a Verweis auf ihre Speicheradresse, wenn sie als Methodenparameter übergeben werden, anstatt den gesamten Wert zu kopieren. Das Schlüsselwort „ref“ führt dieses Verhalten jedoch noch einen Schritt weiter und ermöglicht eindeutige Manipulationen mit Variablen vom Referenztyp.
Unterscheidung von ref- und Nicht-ref-Parametern vom Referenztyp
Bei der Übergabe einer Referenztypvariablen an eine Methode ohne das Schlüsselwort „ref“, wie im Beispiel zu sehen:
void Bar(Foo y) { y.Name = "2"; }
Der Parameter „y“ erhält eine Referenz auf dasselbe Objekt wie die ursprüngliche Variable. Allerdings werden alle innerhalb der Methode an „y“ vorgenommenen Änderungen nicht in der Originalvariablen widergespiegelt.
Andererseits wird das Schlüsselwort „ref“ verwendet, wie in:
void Bar(ref Foo y) { y.Name = "2"; }
Stellt eine Verbindung zwischen der Originalvariablen und dem Parameter „y“ her. „y“ verweist nicht nur auf dasselbe Objekt, sondern alle an „y“ vorgenommenen Änderungen wirken sich direkt auf die ursprüngliche Variable aus.
Ändern von Referenzzeigern
Ein einzigartiger Vorteil von Die Verwendung von „ref“ mit Variablen vom Referenztyp liegt in der Möglichkeit, die Referenz selbst zu ändern. Dies bedeutet, dass Sie die ursprüngliche Variable im Wesentlichen neu zuweisen können, um auf ein anderes Objekt zu verweisen. Zum Beispiel:
Foo foo = new Foo("1"); void Bar(ref Foo y) { y = new Foo("2"); } Bar(ref foo); // foo.Name == "2"
Hier ändert die Methode „Bar“ den Verweis von „foo“, sodass er auf ein neues Objekt zeigt, dessen Eigenschaft „Name“ auf „2“ gesetzt ist. Folglich verweist die ursprüngliche Variable „foo“ nun auf das neu erstellte Objekt mit der geänderten Eigenschaft.
Daher gewährt das Schlüsselwort „ref“ mit Variablen vom Referenztyp Entwicklern die Möglichkeit, beide Eigenschaften des referenzierten Objekts zu ändern und ändern Sie die Referenz selbst, um mehr Flexibilität und Kontrolle über das variable Verhalten innerhalb von Methoden zu bieten.
Das obige ist der detaillierte Inhalt vonWie wirkt sich das Schlüsselwort „ref' auf Referenztypvariablen in C# aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!