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

Wie kann ich Elemente innerhalb einer Liste von Strukturen in C# ändern?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 00:20:39767Durchsuche

How Can I Modify Elements Within a List of Structs in C#?

Ändern von Elementen in einer Liste von Strukturen

Wenn Sie mit einer Liste von Strukturen arbeiten, führt der Versuch, ein einzelnes Element mithilfe einer einfachen Zuweisung zu ändern, dazu in der Fehlermeldung „Der Rückgabewert von System.Collections.Generic.List.this[int] kann nicht geändert werden, da es sich nicht um eine Variable handelt.“ Dies liegt an der Werttypsemantik von Strukturen.

Grundlegendes zur Werttypsemantik

In C# enthalten Strukturvariablen Kopien von Daten, d. h. alle an einer Kopie vorgenommenen Änderungen haben keinen Einfluss auf das Original. Dieses Verhalten unterscheidet sich von Klassen, bei denen Objektverweise auf die tatsächlichen Daten verweisen.

Auf Strukturelemente zugreifen und diese ändern

Im bereitgestellten Beispiel beim Zuweisen von MyList[1]. Wenn Sie den Namen „bob“ verwenden, wird eine neue Instanz von MyStruct erstellt und der Variablen zugewiesen. Diese neue Instanz verweist jedoch nicht auf das ursprüngliche Element in der Liste. Daher bleibt das ursprüngliche Element unverändert.

Optionen zum Ändern von Strukturelementen in einer Liste

Um die tatsächlichen Elemente in einer Liste von Strukturen zu ändern, ziehen Sie die folgenden Ansätze in Betracht:

  1. Verwenden Sie eine Schnittstelle: Durch die Implementierung einer Schnittstelle mit Setter-Methoden kann man das Interne ändern Mitglieder einer Struktur über eine Schnittstellenreferenz. Dieser Ansatz führt jedoch zu Boxing, was zu Leistungseinbußen führt.
  2. Erstellen Sie ein Klassenäquivalent: Wenn das Ändern von Elementen in der Liste von entscheidender Bedeutung ist, ist es möglicherweise vorzuziehen, eine Klasse anstelle einer Struktur zu verwenden . Klassen ermöglichen als Referenztypen direkte Änderungen an der ursprünglichen Instanz.

Auswahl zwischen Strukturen und Klassen

Die Entscheidung, ob eine Struktur oder eine Klasse verwendet werden soll sollte nicht in erster Linie auf der Notwendigkeit basieren, sie in Sammlungen zu speichern. Berücksichtigen Sie stattdessen die Semantik und Anforderungen der dargestellten Daten. Strukturen werden im Allgemeinen für Wertobjekte bevorzugt, die einen einzelnen, unveränderlichen Wert darstellen. Klassen hingegen zeichnen sich durch die Darstellung von Objekten mit veränderlichem Zustand und möglicherweise komplexen Beziehungen aus.

Das obige ist der detaillierte Inhalt vonWie kann ich Elemente innerhalb einer Liste von Strukturen in C# ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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