Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se ofrece una visión general de los delegados genéricos para conversiones, predicados de búsqueda y las acciones que deben llevarse a cabo en los elementos de una matriz o colección.
Delegados genéricos para manipular matrices y listas
El Action<T> delegado genérico representa un método que realiza alguna acción en un elemento del tipo especificado. Puede crear un método que realice la acción deseada en el elemento, crear una instancia del Action<T> delegado para representar ese método y, a continuación, pasar la matriz y el delegado al Array.ForEach método genérico estático. Se llama al método para cada elemento de la matriz.
La List<T> clase genérica también proporciona un ForEach método que usa el Action<T> delegado. Este método no es genérico.
Nota:
Esto plantea un punto interesante sobre los tipos y métodos genéricos. El Array.ForEach método debe ser estático (Shared
en Visual Basic) y genérico porque Array no es un tipo genérico; el único motivo en el que puede especificar un tipo para Array.ForEach operar es que el método tiene su propia lista de parámetros de tipo. Por el contrario, el método no genérico List<T>.ForEach pertenece a la clase genérica List<T>, por lo que simplemente usa el parámetro de tipo de su clase. La clase está fuertemente tipada, por lo que el método puede ser un método de instancia.
El Predicate<T> delegado genérico representa un método que determina si un elemento determinado cumple los criterios definidos. Puede usarlo con los siguientes métodos genéricos estáticos de Array para buscar un elemento o un conjunto de elementos: Exists, , FindFindAll, FindIndex, FindLast, FindLastIndexy TrueForAll.
Predicate<T> también funciona con los métodos de instancia no genéricos correspondientes de la List<T> clase genérica.
El Comparison<T> delegado genérico permite proporcionar un criterio de ordenación para los elementos de matriz o lista que no tienen un criterio de ordenación nativo o para invalidar el criterio de ordenación nativo. Cree un método que realice la comparación, cree una instancia del delegado para representar el Comparison<T> método y, a continuación, pase la matriz y el delegado al Array.Sort<T>(T[], Comparison<T>) método genérico estático. La List<T> clase genérica proporciona una sobrecarga del método de instancia correspondiente, List<T>.Sort(Comparison<T>).
El Converter<TInput,TOutput> delegado genérico permite definir una conversión entre dos tipos y convertir una matriz de un tipo en una matriz de la otra, o convertir una lista de un tipo en una lista del otro. Cree un método que convierta los elementos de la lista existente en un nuevo tipo, cree una instancia de delegado para representar el método y use el Array.ConvertAll método estático genérico para generar una matriz del nuevo tipo de la matriz original o el List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) método de instancia genérica para generar una lista del nuevo tipo de la lista original.
Encadenar delegados
Muchos de los métodos que usan estos delegados devuelven una matriz o lista, que se puede pasar a otro método. Por ejemplo, si desea seleccionar determinados elementos de una matriz, convierta esos elementos en un nuevo tipo y guárdelos en una nueva matriz, puede pasar la matriz devuelta por el FindAll método genérico al ConvertAll método genérico. Si el nuevo tipo de elemento carece de un criterio de ordenación natural, puede pasar la matriz devuelta por el ConvertAll método genérico al Sort<T>(T[], Comparison<T>) método genérico.