Problem:
Beim Versuch, ein Element in einer Strukturliste mit zu ändern Beim Array-Indexoperator (z. B. MyList[1].Name = „bob“) ist ein Fehler aufgetreten: „Die Rückgabe kann nicht geändert werden.“ Wert von 'System.Collections.Generic.List.this[int]', da es sich nicht um eine Variable handelt Werttypsemantik von Strukturen. Strukturen werden nach Wert kopiert. Das bedeutet, dass beim Zugriff auf ein Element aus einer Liste von Strukturen eine neue Instanz erstellt und die Werte kopiert werden. Daher wirkt sich die Änderung dieser neuen Instanz nicht auf das ursprüngliche Element in der Liste aus.
Lösung:
Erwägen Sie stattdessen die Verwendung von Klassen:Wenn die Notwendigkeit, Elemente in einer Liste zu ändern, kritisch ist, sollten Sie die Verwendung von Klassen anstelle von Strukturen in Betracht ziehen. Klassen sind Referenztypen, das heißt, sie werden als Referenz und nicht als Wert übergeben. Das Ändern eines Elements in einer Liste von Klassen wirkt sich direkt auf die ursprüngliche Instanz aus.
Eine Schnittstelle verfügbar machen:
Wenn Strukturen erforderlich sind, besteht eine Lösung darin, eine Schnittstelle auf der bereitzustellen Struktur. Dadurch können Änderungen über die Schnittstellenreferenz vorgenommen werden, die auf das Boxed-Objekt verweist.
Beispiel:
Das obige ist der detaillierte Inhalt vonWie ändere ich Elemente in einer Liste von Strukturen in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!