首頁 > 後端開發 > C++ > C# 清單可以保存具有不同類型參數的多個泛型類型嗎?

C# 清單可以保存具有不同類型參數的多個泛型類型嗎?

Barbara Streisand
發布: 2025-01-18 16:32:13
原創
489 人瀏覽過

Can a C# List Hold Multiple Generic Types with Different Type Parameters?

使用具有多個泛型類型的 C# 清單:解決方案

挑戰在於建立一個能夠在同一清單中保存具有不同類型參數的多個泛型類型的 C# 清單。 考慮一個僅限於值類型的 Metadata<T> 類別。目標是建立一個可以同時儲存 Metadata<int>Metadata<bool>Metadata<double> 物件的清單。

直接使用 Metadata<T> 列表是不可能的,因為 T 必須是單一具體類型。 然而,使用繼承的解決方案提供了一種實用的方法。

使用繼承的解:

這種方法引入了一個抽象基底類別Metadata並從中衍生出像Metadata<T>這樣的專門類別。

<code class="language-csharp">public abstract class Metadata { }

public class Metadata<T> : Metadata where T : struct
{
    private T mDataType; 
    // ... other members ...
}</code>
登入後複製

現在,可以建立抽象基底類別Metadata的清單:

<code class="language-csharp">List<Metadata> metadataObjects = new List<Metadata>();</code>
登入後複製

此列表現在可以容納各種 Metadata<T> 類型的實例:

<code class="language-csharp">metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());</code>
登入後複製

這透過為清單提供通用類型 (Metadata) 優雅地解決了問題,同時允許透過繼承進行特定於類型的實作。 存取每個物件中的特定 T 需要轉換回適當的 Metadata<T> 類型。 這是在 C# 中處理多態性和泛型類型時的常見模式。

以上是C# 清單可以保存具有不同類型參數的多個泛型類型嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板