Heim >Backend-Entwicklung >C++ >Wie kann ich Elemente in einer C#-Strukturliste ändern?
Ändern von Elementen in einer Liste von Strukturen
In C# sind Strukturen Werttypen, was bedeutet, dass jede Instanz ihre eigene Datenkopie enthält. Dieses Verhalten unterscheidet sich von Klassen, bei denen Referenzen auf dasselbe zugrunde liegende Objekt verweisen. Bei der Arbeit mit Strukturlisten ist es wichtig, die Semantik dieser Werttypen zu verstehen.
Beachten Sie den folgenden Code:
List<MyStruct> MyList = new List<MyStruct>(); MyList.Add(new MyStruct("john")); MyList.Add(new MyStruct("peter")); MyList[1].Name = "bob"; // Attempt to modify an element
Dieser Code löst einen Fehler aus, der besagt, dass der Rückgabewert von MyList [int] kann nicht geändert werden, da es keine Variable ist. Dieser Fehler ist auf die Tatsache zurückzuführen, dass Werttypen bei der Zuweisung kopiert werden.
Struct obItem = MyList[1]; // Creates a new instance of MyStruct obItem.Name = "Gishu"; // Modifies the new instance
Hier ist obItem eine neue Instanz von MyStruct mit einer Kopie der Daten von MyList[1]. Alle an obItem vorgenommenen Änderungen wirken sich nicht auf das ursprüngliche Element in der Liste aus.
Lösung:
Wenn Sie Elemente in einer Liste von Strukturen ändern müssen, beachten Sie Folgendes Optionen:
Hier ist ein Beispiel für die Verwendung einer Schnittstelle:
public interface IMyStructModifier { String Name { set; } } public struct MyStruct : IMyStructModifier ... List<Object> obList = new List<Object>(); obList.Add(new MyStruct("ABC")); obList.Add(new MyStruct("DEF")); IMyStructModifier temp2 = obList[1] as IMyStructModifier; temp2.Name = "Now Gishu"; foreach (MyStruct s in obList) // => "ABC", "Now Gishu" { Console.WriteLine(s.Name); }
Fazit:
Während Klassenlisten eine größere Flexibilität beim Ändern von Elementen bieten, können Strukturen nützlich sein, wenn Wertesemantik wünschenswert ist. Wenn Sie die Natur von Werttypen verstehen und alternative Lösungen erkunden, können Sie effektiv mit Strukturlisten in C# arbeiten.
Das obige ist der detaillierte Inhalt vonWie kann ich Elemente in einer C#-Strukturliste ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!