ändern den Wert eines Elements in einer Liste von Strukturen
In der Programmierung sind die Manipulation von Datenstrukturen eine gemeinsame Aufgabe. Beim Umgang mit Listen von Strukturen kann ein bestimmtes Problem auftreten, wenn versucht wird, den Wert eines einzelnen Elements zu ändern. In diesem Artikel wird der zugrunde liegende Grund für dieses Problem untersucht und eine potenzielle Lösung enthält.
Bei der Arbeit mit Werttypen wie Strukturen stellt jede Variable oder Referenz eine eindeutige Instanz der Struktur dar. Das Zuweisen eines Wertes aus einem Listenelement zu einer neuen Variablen wie Struct Obitem = MyList [1]; Alle Änderungen an Obitem wirken sich nicht auf das ursprüngliche Element in MyList aus.
Dieses Verhalten beruht auf der Semantik von Werttypen. Wenn Sie einer neuen Variablen einen Werttyp zuweisen oder als Argument übergeben, wird eine neue Instanz erstellt und die Werte kopiert. Dies steht im Gegensatz zu Referenztypen wie Klassen, bei denen Änderungen an einer Referenz das ursprüngliche Objekt beeinflussen.
, um das Problem der Änderung einzelner Elemente in einer Liste von Strukturen anzugehen. Ein Ansatz besteht darin, eine Schnittstelle zu definieren, die die Struktur implementiert, und diese Schnittstelle zu verwenden, um auf die Struktur zuzugreifen. Dies ermöglicht die Änderung der tatsächlichen Struktur durch eine Schnittstellenreferenz, die auf das Boxed -Objekt hinweist.
Der folgende Code -Snippet zeigt diese Technik:
public interface IMyStructModifier { string Name { set; } } public struct MyStruct : IMyStructModifier { public string Name { get; set; } } List
Diese Methode ermöglicht die Änderung der Originalstruktur in der Liste über die Schnittstellenreferenz.
Es ist wichtig, die Kompromisse der Verwendung von Strukturen gegenüber Klassen für das Speichern in Sammlungen zu berücksichtigen. Strukturen bieten Leistungsvorteile und werden bevorzugt, wenn Unveränderlichkeit oder ein kleiner Speicherpflichtzdruck gewünscht werden. Wenn das Ändern von Elementen in einer Liste jedoch eine Anforderung darstellt, können Klassen eine geeignetere Option sein.
.Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3