[英]Is List in C# generic or non Generic?
根據我的理解,泛型是只能在其中存儲特定數據類型的東西。
在我之前的 StackOverflow 帖子中,我使用ArrayList
(一種非通用數據類型)提出了一個問題。 作為回應,貢獻者告訴我不要使用它,因為它已經過時了,而是使用List
也可以存儲不同的數據類型。 直到現在,我還以為List
只能使用特定的數據類型,但現在我明白了List
也可以在其中存儲不同的數據類型:
List<object>
那么,列表是通用的還是非通用的?
如果我的問題感覺很愚蠢,請解釋通用和非通用 class 之間的實際區別。
非泛型 collections 不是類型安全的,增加了在運行時遇到錯誤的機會。 因此,建議使用通用 collections。 您可以通過閱讀這篇文章獲得有關該主題的更多詳細信息:
泛型參數的類型僅在聲明時指定。 使用它,程序員將提高應用程序的性能。 除了性能之外,generics 還提供類型安全和更高質量的代碼,因為您可以重用數據處理算法而無需復制特定於類型的代碼。
正如@Jeroen Mostert 的評論中所解釋的:
泛型類型只是具有任意數量的類型參數的類型,其中包括
List<T>
。 集合可以存儲的類型與類型是否是通用的問題是分開的:如前所述,List<object>
可以保存任何object
(所以一切),而我可以編寫一個非通用的IntList
並且仍然只接受int
s。 “通用”部分來自不必編寫DoubleList
、CharList
等,而是能夠對所有這些都使用List<T>
。ArrayList
在這個方案中,也可以稱為ObjectList
。
在 C# 中,通用 class 或方法是將一種或多種類型的規范推遲到聲明之前。 這允許程序員使用他們想要的任何類型的方法或 class - 並減少所需的代碼量,因為相同的類/方法可以用於多種類型。
List<T>
是一個通用的 class ,可以與聲明它的類型一起使用; 例如, List<int>
可以存儲int
s,而list<string>
可以存儲string
s。
ArrayList
類似於object
的列表( List<object>
),但它不是通用的,因為您不能說您要存儲int
s 或string
s,例如。
請參閱C# 中有關 generics 的 Microsoft 文檔以進行進一步閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.