Obecní delegáty pro manipulaci s poli a seznamy

Toto téma obsahuje přehled obecných delegátů pro převody, predikáty vyhledávání a akce, které se mají provést u prvků pole nebo kolekce.

Obecní delegáty pro manipulaci s poli a seznamy

Obecný Action<T> delegát představuje metodu, která provádí určitou akci u prvku zadaného typu. Můžete vytvořit metodu, která provádí požadovanou akci u elementu, vytvořit instanci delegáta Action<T> představující tuto metodu a pak předat pole a delegát statické Array.ForEach obecné metodě. Metoda je volána pro každý prvek pole.

Obecná List<T> třída také poskytuje metodu ForEach , která používá delegáta Action<T> . Tato metoda není obecná.

Poznámka:

To představuje zajímavý bod o obecných typech a metodách. Metoda Array.ForEach musí být statická (Shared v jazyce Visual Basic) a obecná, protože Array není obecný typ. Jediným důvodem, proč lze zadat typ, pro Array.ForEach který se má pracovat, je, že metoda má vlastní seznam parametrů typu. Naproti tomu negenerická List<T>.ForEach metoda patří do obecné třídy List<T>, takže jednoduše používá typ parametru jeho třídy. Třída je silného typu, takže metoda může být metoda instance.

Obecný Predicate<T> delegát představuje metodu, která určuje, zda určitý prvek splňuje kritéria, která definujete. Můžete ji použít s následujícími statickými obecnými metodami Array hledání elementu nebo sady prvků: Exists, Find, FindAll, FindIndex, , FindLastFindLastIndexa TrueForAll.

Predicate<T> také funguje s odpovídajícími negenerickými metodami List<T> instance obecné třídy.

Obecný Comparison<T> delegát umožňuje zadat pořadí řazení pro prvky pole nebo seznamu, které nemají nativní pořadí řazení nebo přepsat nativní pořadí řazení. Vytvořte metodu, která provádí porovnání, vytvořte instanci delegáta Comparison<T> , která představuje vaši metodu, a pak předejte pole a delegát statické Array.Sort<T>(T[], Comparison<T>) obecné metodě. Obecná List<T> třída poskytuje odpovídající přetížení metody instance , List<T>.Sort(Comparison<T>).

Obecný Converter<TInput,TOutput> delegát umožňuje definovat převod mezi dvěma typy a převést pole jednoho typu na pole druhého nebo převést seznam jednoho typu na seznam druhého. Vytvořte metodu, která převede prvky existujícího seznamu na nový typ, vytvoří instanci delegáta představující metodu a použije Array.ConvertAll obecnou statickou metodu k vytvoření pole nového typu z původního pole nebo List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) obecné metody instance k vytvoření seznamu nového typu z původního seznamu.

Řetězení delegátů

Mnoho metod, které používají tyto delegáty, vrací pole nebo seznam, které lze předat jiné metodě. Pokud například chcete vybrat určité prvky pole, převeďte tyto prvky na nový typ a uložte je do nového pole, můžete předat pole vrácené FindAll obecnou metodou obecné ConvertAll metodě. Pokud nový typ prvku nemá přirozené pořadí řazení, můžete předat pole vrácené ConvertAll obecnou metodou do Sort<T>(T[], Comparison<T>) obecné metody.

Viz také