首頁 >後端開發 >C++ >如何在 C# 中修改結構列表中的值?

如何在 C# 中修改結構列表中的值?

DDD
DDD原創
2025-01-02 17:28:391018瀏覽

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

更改結構體列表中的值

使用結構體列表時,嘗試修改元素時可能會遇到錯誤。此問題的出現​​是由於結構的值類型語義,它為每個值類型變數建立單獨的實例。因此,當一個結構體元素被複製到另一個變數時,它的修改不會影響原始元素。

解決這個困境的方法在於結構體可以公開介面。透過為所需屬性建立一個具有設定存取器的接口,可以透過介面引用(指向裝箱物件)修改底層結構。以下程式碼示範了這個概念:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn