C#泛型

    熟悉面向對象編程的開發人員都深諳這種編程的好處,其中之一就是「代碼重用」,它大大提升了開發效率。泛型是CLR和編程語言提供的一種特殊機制,它支持另外一種形式的代碼重用,即「算法重用」。算法

    CLR容許建立泛型引用類型和泛型值類型,還容許建立泛型接口和泛型委託,CLR容許在引用類型、值類型或接口中定義泛型方法。編程

    泛型列表算法的FCL類稱爲List<T>(讀做List of Tee)。這個類是在System。Collections.Generic命名空間中定義的。泛型List類的設計者緊接在類名後添加了<T>,代表操做的是一個未指定的數據類型,T表示變量名,也稱爲類型參數(type parameter)。數組

    根據Microsof的設計原則,泛型參數變量要麼稱爲T,要麼至少以大寫T開頭。大寫T表明類型(Type),就像大寫I表明接口(Interface)同樣。安全

    List<DateTime> dtlist=new List<DateTime>(),使用泛型類型或方法時,指定的具體數據類型稱爲類型實參(type argument)。編程語言

    泛型爲開發人員提供的優點有:源代碼保護、類型安全、更加清晰的代碼和最佳的性能。ide

  泛型最明顯的應用就是集合類。FCL已經定義了幾個泛型集合類,大多數都在System.Collections.Generic和System.Collections.ObjectModel命名空間中。要使用線程安全的泛型集合類,能夠到System.Collections.Concurrent命名空間去尋找。性能

    泛型類型參數的類型稱爲開放類型(open type)若是爲全部類型實參傳遞的都是實際數據類型,類型就稱爲封閉類型(closed type)例如:DictionaryStringKey<T>爲開發類型,DictionaryStringKey<Guid>爲封閉類型。ui

    元數,也就是類型要求的類型參數的個數。DictionaryStringKey<T>爲一元;DictionaryStringKey<T1,T2>爲二元,以此類推。spa

    泛型類型同一性。using DateTimeList=System.Collections.Generic.List<System.DateTime>;Boolean sameType=(typeof(List<DateTime>)==typeof(DateTimeList));加上using纔不會喪失類型同一性(identity)和相等性(equivalence)線程

泛型類或接口

描述

對應的非泛型類型

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

相關文章
相關標籤/搜索