首頁 > 後端開發 > C++ > 為什麼 C# 中的通用開放類型列表初始化失敗?

為什麼 C# 中的通用開放類型列表初始化失敗?

DDD
發布: 2025-01-11 06:00:42
原創
278 人瀏覽過

Why Does List Initialization Fail with a Generic Open Type in C#?

C# 通用開放類型清單初始化失敗:解決方案

當使用像Data<T> 這樣的通用開放類型及其封閉構造類型(例如StringDataDecimalData)時,嘗試使用List<Data> 建立清單會導致編譯器錯誤:「使用泛型類型'資料'需要1 個類型參數。

問題解釋

編譯器需要知道 Data<T> 類別中的特定類型才能建立清單。 List<Data> 是不明確的;它沒有指定 T 代表什麼類型。

有效的解

以下是解決此問題的兩種實用方法:

  1. 介面實作: 建立 IData 及其衍生型別實作的介面(例如 Data<T>)。 然後,將您的清單聲明為 List<IData>。這利用了多態性,讓您在同一列表中儲存不同 Data<T> 類型的實例。

  2. 抽象基底類別:DataBase 定義一個抽象基底類別(例如 Data<T>)。 從這個基底類別派生出您的具體類型。 然後您可以建立 List<DataBase> 清單。 這提供了強類型,但與介面方法相比通用性較差。

注意事項

這兩種方法都會引入一定程度的設計複雜性。 選擇取決於您的應用程式的具體需求。 介面提供了更大的靈活性,而抽象基底類別提供了更結構化的方法。

延伸閱讀

要更深入了解 C# 中的泛型、變異數和多態性,請參考以下資源:

以上是為什麼 C# 中的通用開放類型列表初始化失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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