Partager via


Délégués génériques pour manipuler des tableaux et des listes

Cette rubrique donne une vue d’ensemble des délégués génériques pour les conversions, des prédicats de recherche et des actions à effectuer sur les éléments d’un tableau ou d’une collection.

Délégués génériques pour manipuler des tableaux et des listes

Le Action<T> délégué générique représente une méthode qui effectue une action sur un élément du type spécifié. Vous pouvez créer une méthode qui effectue l’action souhaitée sur l’élément, créer une instance du Action<T> délégué pour représenter cette méthode, puis passer le tableau et le délégué à la Array.ForEach méthode générique statique. La méthode est appelée pour chaque élément du tableau.

La List<T> classe générique fournit également une ForEach méthode qui utilise le Action<T> délégué. Cette méthode n’est pas générique.

Remarque

Cela fait un point intéressant sur les types et méthodes génériques. La méthode Array.ForEach doit être statique (Shared en Visual Basic) et générique parce que Array n’est pas un type générique ; la seule raison pour laquelle vous pouvez spécifier un type sur lequel Array.ForEach doit opérer est que la méthode possède sa propre liste de paramètres de type. En revanche, la méthode non générique List<T>.ForEach appartient à la classe List<T>générique . Elle utilise donc simplement le paramètre de type de sa classe. La classe est fortement typée :la méthode peut donc être une méthode d'instance.

Le Predicate<T> délégué générique représente une méthode qui détermine si un élément particulier répond aux critères que vous définissez. Vous pouvez l'utiliser avec les méthodes génériques statiques suivantes de Array pour rechercher un élément ou un ensemble d'éléments : Exists, Find, FindAll, FindIndex, FindLast, FindLastIndex et TrueForAll.

Predicate<T> fonctionne également avec les méthodes d’instance non générique correspondantes de la List<T> classe générique.

Le Comparison<T> délégué générique vous permet de fournir un ordre de tri pour les éléments de tableau ou de liste qui n’ont pas d’ordre de tri natif, ou de remplacer l’ordre de tri natif. Créez une méthode qui effectue la comparaison, créez une instance du Comparison<T> délégué pour représenter votre méthode, puis transmettez le tableau et le délégué à la Array.Sort<T>(T[], Comparison<T>) méthode générique statique. La List<T> classe générique fournit une surcharge de méthode d’instance correspondante. List<T>.Sort(Comparison<T>)

Le Converter<TInput,TOutput> délégué générique vous permet de définir une conversion entre deux types et de convertir un tableau d’un type en tableau de l’autre ou de convertir une liste d’un type en liste de l’autre. Créez une méthode qui convertit les éléments de la liste existante en un nouveau type, créez une instance déléguée pour représenter la méthode et utilisez la Array.ConvertAll méthode statique générique pour produire un tableau du nouveau type à partir du tableau d’origine, ou la List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) méthode d’instance générique pour produire une liste du nouveau type à partir de la liste d’origine.

Chaînage de délégués

De nombreuses méthodes qui utilisent ces délégués retournent un tableau ou une liste, qui peut être passé à une autre méthode. Par exemple, si vous souhaitez sélectionner certains éléments d’un tableau, convertissez ces éléments en nouveau type et enregistrez-les dans un nouveau tableau, vous pouvez passer le tableau retourné par la FindAll méthode générique à la ConvertAll méthode générique. Si le nouveau type d’élément n’a pas d’ordre de tri naturel, vous pouvez passer le tableau retourné par la ConvertAll méthode générique à la Sort<T>(T[], Comparison<T>) méthode générique.

Voir aussi