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

本主題概略說明轉換、搜尋述詞以及要在陣列或集合的項目上採取之動作的泛型委派。

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

Action<T> 泛型委派表示在指定類型項目上執行某些動作的方法。 您可以建立一個在項目上執行所需動作的方法、建立 Action<T> 委派的執行個體來表示該方法,然後將陣列和委派傳遞至 Array.ForEach 靜態泛型方法。 針對陣列的每個項目,都會呼叫該方法。

List<T> 泛型類別也有提供一個使用 Action<T> 委派的 ForEach 方法。 這不是泛型方法。

注意

這對於泛型類型和方法形成有趣的一點。 Array.ForEach 方法必須為靜態 (在 Visual Basic 中為 Shared) 和泛型,因為 Array 不是泛型類型;您可以為 Array.ForEach 指定操作類型的唯一理由,就是該方法有它自己的型別參數清單。 相對地,非泛型 List<T>.ForEach 方法屬於泛型類別 List<T>,因此它會直接使用其類別的類型參數。 該類別為強類型,因此這個方法可以是執行個體方法。

Predicate<T> 泛型委派表示用來判斷特定項目是否符合您定義之準則的方法。 您可以將其與 Array 的下列靜態泛型方法搭配使用,以搜尋單一項目或一組項目:ExistsFindFindAllFindIndexFindLastFindLastIndexTrueForAll

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 泛型靜態方法,從原始的陣列產生新的類型陣列,或是使用 List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) 泛型執行個體方法,從原始清單產生新類型的清單。

變更委派

許多使用這些委派的方法都會傳回陣列或清單,該陣列或清單可以再傳遞至另一個方法。 例如,如果您想要選取陣列的特定項目、將這些項目轉換成新的類型,並將它們儲存在新的陣列中,您可以將 FindAll 泛型方法傳回的陣列傳遞至 ConvertAll 泛型方法。 如果新的項目類型沒有自然排序順序,您可以將 ConvertAll 泛型方法傳回的陣列傳遞至 Sort<T>(T[], Comparison<T>) 泛型方法。

另請參閱