泛型是c# 2.0中的新增元素(c++中稱為模板),主要用於解決一系列類似的問題。這種機制允許將類名作為引數傳遞給泛型型別,並生成相應的物件。
泛型是用來做什麼的?答案是:沒有泛型,將會很難建立型別安全的集合。
在 .net 1.1 版本(2003)中,當你在使用集合時,這種型別安全就失效了。由.net 類庫提供的所有關於集合的類全是用來儲存基型別(object)的,而.net中所有的一切都是由object基類繼承下來的,因此所有型別都可以放到乙個集合中。於是,相當於根本就沒有了型別檢測。更糟的是,每一次你從集合中取出乙個object,你都必須將它強制轉換成正確的型別,這一轉換將對效能造成影響,並且產生冗長的**(如果你忘了進行轉換,將會丟擲異常)。更進一步地講,如果你給集合中新增乙個值型別(比如,乙個整型變數),這個整型變數就被隱式地裝箱了(再一次降低了效能),而當你從集合中取出它的時候,又會進行一次顯式地拆箱(又一次效能的降低和型別轉換)。
怎樣建立泛型集合?
主要利用system.collections.generic命名空間下面的list泛型類建立集合,語法如下:
list
<
t>
listoft
=new
list
<
t>
();其中的"t"就是所要使用的型別,既可以是簡單型別,如string、int,也可以是使用者自定義型別。
C 泛型 使用泛型List
一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...
C 泛型 泛型類擴充套件
泛型 更準確的使用一種以上的型別 方式 泛型允許我們宣告型別引數化的 我們可以用不同的型別進行例項化 也就是說,我們可以用 型別佔位符 型別引數 來宣告,然後在建立例項時提供真實型別 泛型不是型別,而是型別的模板 c 提供了5種泛型 類 結構 介面 委託和方法。前面四個是型別,方法是成員。一 泛型類...
C 泛型 泛型集合Dictionary
在system.collections.generic命名空間中,與arraylist相對應的泛型集合是list,與hashtable相對應的泛型集合是dictionary,其儲存資料的方式與雜湊表相似,通過鍵 值來儲存元素,並具有泛型的全部特徵,編譯時檢查型別約束,讀取時無須型別轉換。本儲存的例子...