Share via


管理陣列和清單的泛型委派

本主題提供泛型委派的概觀,這些委派可用來轉換、搜尋述詞,以及在陣列或集合元素上要採取的動作。

管理陣列和清單的泛型委派

Action<T> 泛型委派表示可在指定之型別的元素上執行某個動作的方法。 您可以建立在此元素上執行所需動作的方法、建立 Action<T> 委派的執行個體來表示該方法,然後將陣列和委派傳遞給 Array.ForEach<T> 靜態泛型方法; 此陣列的每一個元素都會呼叫這個方法。

List<T> 泛型類別也提供 ForEach 方法,此方法會使用 Action<T> 委派; 這個方法不是泛型。

注意事項注意事項

如此就讓泛型型別和方法產生了一個有趣的地方;Array.ForEach<T> 方法必須是靜態 (Visual Basic 中為 Shared) 及泛型,因為 Array 不是泛型型別;您可以指定型別讓 Array.ForEach<T> 操作的唯一理由是:這個方法有它自己的型別參數清單。對照之下,非泛型 List<T>.ForEach 方法則屬於泛型類別 List<T>,讓它只會使用其類別的型別參數。此類別為強型別,所以此方法可以是執行個體方法。

Predicate<T> 泛型委派表示可判斷特定元素是否符合您定義之準則的方法。 您可以將它與下列 Array 之靜態泛型方法一起使用,以搜尋某個元素或一組元素:Exists<T>Find<T>FindAll<T>FindIndexFindLast<T>FindLastIndexTrueForAll<T>

Predicate<T> 也可與 List<T> 泛型類別的對應之非泛型執行個體方法一起使用。

Comparison<T> 泛型委派可讓您針對沒有原生排序次序的陣列或清單元素提供排序次序,或是覆寫原生排序次序。 建立執行比較的方法、建立表示方法的 Comparison<T> 委派之執行個體,然後將陣列和委派傳遞給 Array.Sort<T>(T[], Comparison<T>) 靜態泛型方法。 List<T> 泛型類別提供了對應的執行個體方法多載 List<T>.Sort(Comparison<T>)

Converter<TInput, TOutput> 泛型委派可讓您定義兩個型別之間的轉換,以及將一個型別的陣列轉換成另一個型別的陣列,或是將一個型別的清單轉換成另一個型別的清單。 建立可將現有清單的元素轉換成新型別的方法、建立表示此方法的委派執行個體,以及使用 Array.ConvertAll<TInput, TOutput> 泛型靜態方法從原始陣列產生新型別的陣列,或是使用 List<T>.ConvertAll<TOutput> 泛型執行個體方法從原始清單產生新型別的清單。

鏈結委派

許多使用這些委派的方法都會傳回陣列或清單,而此陣列或清單可以傳遞給另一個方法。 例如,如果您想要選取陣列的某些元素、將這些元素轉換成新型別,並將它們儲存在新陣列中,您可以將 FindAll<T> 泛型方法傳回的陣列傳遞給 ConvertAll<TInput, TOutput> 泛型方法。 如果新元素型別缺少自然排序次序,您可以將 ConvertAll<TInput, TOutput> 泛型方法傳回的陣列傳遞給 Sort<T>(T[], Comparison<T>) 泛型方法。

請參閱

參考

System.Collections.Generic

System.Collections.ObjectModel

概念

.NET Framework 中的泛型

.NET Framework 中的泛型集合

泛型介面

泛型的優點和限制

泛型中的共變數和反變數