Ich verstehe, dass wenn ich einen Wert-Typ (int
, struct
usw.) als Parameter (ohne das Schlüsselwort ref
) übergeben, eine Kopie dieser Variablen an die Methode übergeben wird, aber wenn ich das ref
Schlüsselwort eine Referenz verwenden Auf diese Variable wird verzichtet, nicht auf eine neue.Was ist die Verwendung von "Ref" für Referenztyp-Variablen in C#?
Aber bei Referenztypen, wie Klassen, auch ohne das Schlüsselwort ref
, wird eine Referenz an die Methode übergeben, keine Kopie. Also, was ist das ref
Schlüsselwort mit Referenztypen?
Nehmen Sie zum Beispiel:
var x = new Foo();
Was ist der Unterschied zwischen der folgenden?
void Bar(Foo y) {
y.Name = "2";
}
und
void Bar(ref Foo y) {
y.Name = "2";
}
so dass im Grunde Sie bekommen ein Verweis auf die Originalreferenz – lhahne
Sie können ändern, worauf die ursprüngliche Referenz verweist, also ja. – user7116
Chris, deine Erklärung ist großartig; Danke, dass Sie mir geholfen haben, dieses Konzept zu verstehen. –