更改結構體列表中的值
使用結構體列表時,嘗試修改元素時可能會遇到錯誤。此問題的出現是由於結構的值類型語義,它為每個值類型變數建立單獨的實例。因此,當一個結構體元素被複製到另一個變數時,它的修改不會影響原始元素。
解決這個困境的方法在於結構體可以公開介面。透過為所需屬性建立一個具有設定存取器的接口,可以透過介面引用(指向裝箱物件)修改底層結構。以下程式碼示範了這個概念:
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)); // Using a boxed object MyStruct temp = (MyStruct)obList[1]; temp.Name = "Gishu"; // Using the interface IMyStructModifier temp2 = obList[1] as IMyStructModifier; temp2.Name = "Now Gishu";
此方法允許修改結構清單中的元素,儘管它可能會導致裝箱。因此,在考慮類型的設計時,集合儲存和修改的需求不應覆蓋類別和結構之間適當的語義選擇。
以上是如何在 C# 中修改結構列表中的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!