Share via


何時使用泛型集合

通常建議使用泛型集合,因為可以得到型別安全的立即好處,而不需衍生自基底集合型別及實作型別特定的成員。 當集合元素為實值型別時,泛型集合型別通常要比對應的非泛型集合型別有較理想的效能 (也優於衍生自非泛型基底集合型別的型別),因為有了泛型就不需要將這些元素進行 Box 處理。

對於以 .NET Framework 4 版 (含) 以後版本為目標的程式,當有多個執行緒可能同時在集合中加入或移除項目時,您應該使用 System.Collections.Concurrent 命名空間中的泛型集合類別。

下列泛型型別會對應到現有的集合型別:

其他型別

有幾個泛型集合型別沒有非泛型對應項目。 包括以下內容:

LINQ to Objects

只要物件型別實作 System.Collections.IEnumerableSystem.Collections.Generic.IEnumerable<T> 介面,LINQ to Objects 功能就可讓您使用 LINQ 查詢以存取記憶體中的物件。 LINQ 查詢提供一般模式以存取資料,比標準的 foreach 迴圈 (Loop) 更精簡、可讀性更高,並提供篩選、排序和群組功能。 LINQ 查詢也可以提升效能。 如需詳細資訊,請參閱 LINQ to Objects平行 LINQ (PLINQ)

其他功能

某些泛型型別的功能在非泛型集合型別中找不到。 例如,對應到非泛型 ArrayList 類別的 List<T> 類別有一些方法可以接受泛型委派,例如,可讓您指定搜尋清單之方法的 Predicate<T> 委派、表示在清單的每一個元素上執行的方法之 Action<T> 委派,以及可讓您定義型別之間的轉換之 Converter<TInput, TOutput> 委派。

List<T> 類別可讓您指定自己的 IComparer<T> 泛型介面實作,以排序及搜尋清單。 SortedDictionary<TKey, TValue>SortedList<TKey, TValue> 類別也有這個功能。 此外,這些類別可讓您在建立集合時指定比較子。 同樣地,Dictionary<TKey, TValue>KeyedCollection<TKey, TItem> 類別也可讓您指定自己的相等比較子。

請參閱

概念

.NET Framework 中的泛型

其他資源

常用的集合型別