簡體   English   中英

C# 中的列表是通用的還是非通用的?

[英]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。 “通用”部分來自不必編寫DoubleListCharList等,而是能夠對所有這些都使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM