C# 通用開放類型清單初始化失敗:解決方案
當使用像Data<T>
這樣的通用開放類型及其封閉構造類型(例如StringData
、DecimalData
)時,嘗試使用List<Data>
建立清單會導致編譯器錯誤:「使用泛型類型'資料'需要1 個類型參數。
問題解釋
編譯器需要知道 Data<T>
類別中的特定類型才能建立清單。 List<Data>
是不明確的;它沒有指定 T
代表什麼類型。
有效的解
以下是解決此問題的兩種實用方法:
介面實作: 建立 IData
及其衍生型別實作的介面(例如 Data<T>
)。 然後,將您的清單聲明為 List<IData>
。這利用了多態性,讓您在同一列表中儲存不同 Data<T>
類型的實例。
抽象基底類別: 為 DataBase
定義一個抽象基底類別(例如 Data<T>
)。 從這個基底類別派生出您的具體類型。 然後您可以建立 List<DataBase>
清單。 這提供了強類型,但與介面方法相比通用性較差。
注意事項
這兩種方法都會引入一定程度的設計複雜性。 選擇取決於您的應用程式的具體需求。 介面提供了更大的靈活性,而抽象基底類別提供了更結構化的方法。
延伸閱讀
要更深入了解 C# 中的泛型、變異數和多態性,請參考以下資源:
以上是為什麼 C# 中的通用開放類型列表初始化失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!