泛型(generic)是C#語言2.0和通用語言運行時(CLR)的一個新特性。泛型為.NET框架引入了類型參數(type parameters)的概念。類型參數使得設計類和方法時,不必確定一個或多個具體參數,其的具體參數可延遲到客戶代碼中聲明、實現。這意味著使用泛型的類型參數T,寫一個類MyList
泛型(generic)是C#語言2.0和通用語言運行時(CLR)的一個新特性。泛型為.NET框架引入了類型參數(type parameters)的概念。類型參數使得設計類和方法時,不必確定一個或多個具體參數,其的具體參數可延遲到客戶代碼中聲明、實現。這意味著使用泛型的類型參數T,寫一個類MyList<T>,客戶代碼可以這樣調用:MyList<int>, MyList<string>或 MyList<MyClass>。這避免了運行時類型轉換或裝箱操作的代價和風險。
目錄 C# 中的泛型. 1 一、泛型概述. 2 二、泛型的優點. 5 三、泛型類型參數. 7 四、類型參數的約束. 8 五、泛型類. 11 六、泛型介面. 13 七、泛型方法. 19 八、泛型委托. 21 九、泛型代碼中的default 關鍵字. 23 十、C++ 模板和C# 泛型的區別. 24 十一 、運行時中的泛型. 25 十二 、基礎類庫中的泛型. 27
約束 | 描述 |
where T: struct | 類型參數必須為值類型。 |
where T : class | 類型參數必須為類型。 |
where T : new() | 類型參數必須有一個公有、無參的構造函數。當於其它約束聯合使用時,new()約束必須放在最後。 |
where T : <base class name> | 類型參數必須是指定的基類型或是派生自指定的基類型。 |
where T : <interface name> | 類型參數必須是指定的介面或是指定介面的實現。可以指定多個介面約束。介面約束也可以是泛型的。 |
泛型類或介面 | 描述 | 對應的非泛型類型 |
Collection<T> ICollection<T> | 為泛型容器提供基類 | CollectionBase ICollection |
Comparer<T> IComparer<T> IComparable<T> | 比較兩個相同泛型類型的對象是否相等、可排序。 | Comparer IComparer IComparable |
Dictionary<K, V> IDictionary<K,V> | 表示用鍵組織的鍵/值對集合。 | Hashtable IDictionary |
Dictionary<K, V>.KeyCollection | 表示Dictionary<K, V>中鍵的集合。 | None. |
Dictionary<K, V>.ValueCollection | 表示Dictionary<K, V>中值的集合。 | None. |
IEnumerable<T> IEnumerator<T> | 表示可以使用foreach 迭代的集合。 | IEnumerable IEnumerator |
KeyedCollection<T, U> | 表示有鍵值的集合。 | KeyedCollection |
LinkedList<T> | 表示雙向鏈表。 | None. |
LinkedListNode<T> | 表示LinkedList<T>中的節點。 | None. |
List<T> IList<T> | 使用大小可按需動態增加的數組實現 IList 介面 | ArrayList IList |
Queue<T> | 表示對象的先進先出集合。 | Queue |
ReadOnlyCollection<T> | 為泛型只讀容器提供基類。 | ReadOnlyCollectionBase |
SortedDictionary<K, V> | 表示鍵/值對的集合,這些鍵和值按鍵排序並可按照鍵訪問,實現IComparer<T>介面。 | SortedList |
Stack<T> | 表示對象的簡單的後進先出集合。 |
Stack
|
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=705841