Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema enthält eine Übersicht über generische Delegaten für Konvertierungen, Such-Prädikate und Aktionen, die für Elemente eines Arrays oder einer Auflistung ausgeführt werden sollen.
Generische Delegaten zum Manipulieren von Arrays und Listen
Der Action<T> generische Delegat stellt eine Methode dar, die eine Aktion für ein Element des angegebenen Typs ausführt. Sie können eine Methode erstellen, die die gewünschte Aktion für das Element ausführt, eine Instanz des Action<T> Delegaten erstellen, um diese Methode darzustellen, und dann das Array und den Delegaten an die Array.ForEach statische generische Methode übergeben. Die Methode wird für jedes Element des Arrays aufgerufen.
Die List<T> generische Klasse stellt auch eine ForEach Methode bereit, die den Action<T> Delegaten verwendet. Diese Methode ist nicht generisch.
Hinweis
Dies hebt einen interessanten Aspekt zu generischen Typen und Methoden hervor. Die Array.ForEach Methode muss statisch (Shared in Visual Basic) und generisch sein, da es sich nicht um Array einen generischen Typ handelt. Der einzige Grund, an dem Sie einen Typ angeben können, für Array.ForEach den sie ausgeführt werden soll, ist, dass die Methode über eine eigene Typparameterliste verfügt. Im Gegensatz dazu gehört die nichtgenerische List<T>.ForEach Methode zur generischen Klasse List<T>, sodass einfach der Typparameter der Klasse verwendet wird. Die Klasse ist streng typisiert, wodurch die Methode als Instanzmethode implementiert werden kann.
Der Predicate<T> generische Delegat stellt eine Methode dar, die bestimmt, ob ein bestimmtes Element kriterien erfüllt, die Sie definieren. Sie können es mit den folgenden statischen generischen Methoden Array verwenden, um nach einem Element oder einer Reihe von Elementen zu suchen: Exists, , Find, FindAll, FindIndex, FindLast, und FindLastIndexTrueForAll.
Predicate<T> funktioniert auch mit den entsprechenden nichtgenerischen Instanzmethoden der List<T> generischen Klasse.
Mit dem Comparison<T> generischen Delegat können Sie eine Sortierreihenfolge für Array- oder Listenelemente bereitstellen, die keine systemeigene Sortierreihenfolge aufweisen oder die systemeigene Sortierreihenfolge überschreiben. Erstellen Sie eine Methode, die den Vergleich durchführt, erstellen Sie eine Instanz des Comparison<T> Delegaten, um Ihre Methode darzustellen, und übergeben Sie dann das Array und den Delegaten an die Array.Sort<T>(T[], Comparison<T>) statische generische Methode. Die List<T> generische Klasse stellt eine entsprechende Instanzmethodenüberladung bereit. List<T>.Sort(Comparison<T>)
Der Converter<TInput,TOutput> generische Delegat ermöglicht es Ihnen, eine Konvertierung zwischen zwei Typen zu definieren und ein Array eines Typs in ein Array des anderen zu konvertieren oder eine Liste eines Typs in eine Liste der anderen zu konvertieren. Erstellen Sie eine Methode, die die Elemente der vorhandenen Liste in einen neuen Typ konvertiert, eine Stellvertretungsinstanz erstellt, um die Methode darzustellen, und verwenden Sie die Array.ConvertAll generische statische Methode, um ein Array des neuen Typs aus dem ursprünglichen Array oder die List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) generische Instanzmethode zu erzeugen, um eine Liste des neuen Typs aus der ursprünglichen Liste zu erstellen.
Verketten von Delegaten
Viele der Methoden, die diese Delegaten verwenden, geben ein Array oder eine Liste zurück, die an eine andere Methode übergeben werden kann. Wenn Sie beispielsweise bestimmte Elemente eines Arrays auswählen, diese Elemente in einen neuen Typ konvertieren und in einem neuen Array speichern möchten, können Sie das von der FindAll generischen Methode zurückgegebene Array an die ConvertAll generische Methode übergeben. Wenn der neue Elementtyp keine natürliche Sortierreihenfolge aufweist, können Sie das von der ConvertAll generischen Methode zurückgegebene Array an die Sort<T>(T[], Comparison<T>) generische Methode übergeben.