Heim > Backend-Entwicklung > C++ > Wie ändere ich Elemente in einer Liste von Strukturen in C#?

Wie ändere ich Elemente in einer Liste von Strukturen in C#?

Barbara Streisand
Freigeben: 2025-01-01 04:49:10
Original
371 Leute haben es durchsucht

How to Modify Elements in a List of Structs in C#?

Elemente in Strukturlisten ändern

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage