Heim >Backend-Entwicklung >C++ >Wie kann ich Referenzen pflegen, wenn ich Klassenfeldern in C# Werte zuweise?
Beibehalten von Referenzen in Klassenfeldzuweisungen in C#
Beim Versuch, einem Klassenfeld einen Wert per Referenz zuzuweisen, kann es zu unerwartetem Verhalten kommen. Im bereitgestellten Beispiel führte die Zuweisung eines „Ref-Parameters“ zu einem Feld zu einem Referenzverlust.
Verstehen der Einschränkung
C# schränkt die Deklaration von Feldern als Referenzen ein Variablen. Dies ist auf mögliche Konsequenzen zurückzuführen:
Überwindung der Einschränkung
Obwohl ein echtes Referenzfeld nicht möglich ist, gibt es Alternativen:
Option 1 : Erstellen Sie eine Wrapper-Klasse
Sie können eine Wrapper-Klasse erstellen, die den referenzierten Wert als Eigenschaft enthält. Die Klasse kann Methoden zum Abrufen und Festlegen des Werts bereitstellen und so die Referenz effektiv beibehalten.
public class Wrapper { public int Value { get; set; } } ... Wrapper wrapper = new Wrapper { Value = 123 };
Option 2: Lambda-Ausdrücke verwenden
Sie können Lambda-Ausdrücke verwenden, um Definieren Sie einen Getter und Setter für eine referenzierte Variable. Dadurch wird der Variablen über einen Delegaten eine Referenz zugewiesen.
public delegate int Getter(); public delegate void Setter(int value); ... Getter getter = () => y; Setter setter = z => { y = z; };
Fazit
Durch Verständnis der Gründe für die Ref-Feldbeschränkung und Verwendung alternativer Techniken wie Wrapper-Klassen oder Lambda-Ausdrücke ist es möglich, in C# ein referenzähnliches Verhalten bei Klassenfeldzuweisungen zu erreichen.
Das obige ist der detaillierte Inhalt vonWie kann ich Referenzen pflegen, wenn ich Klassenfeldern in C# Werte zuweise?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!