Representantes Genéricos para Manipulação de Matrizes e Listas
Este tópico fornece uma visão geral dos representantes genéricos para conversões, predicados de pesquisa e ações a serem tomadas nos elementos de uma matriz ou coleção.
Representantes Genéricos para Manipulação de Matrizes e Listas
O delegado genérico Action<T> representa um método que executa alguma ação em um elemento do tipo especificado.Você pode criar um método que executa a ação desejada no elemento, criar uma instância do representante Action<T> para representar esse método e, em seguida, passa a matriz e o representante para o método estado genérico Array.ForEach<T>.O método é chamado para cada elemento da matriz.
A classe genérica List<T> também fornece um método ForEach que usa o representante Action<T>.Este método não é genérico.
Observação: |
---|
Isso é um ponto interessante sobre tipos genéricos e métodos.O Array.ForEach<T> método deve ser estático)Shared no Visual Basic) e genérico porque Array não é um genérico tipo; a única razão que você pode especificar um tipo para Array.ForEach<T> para operar em é que o método tem sua própria lista de parâmetro de tipo. Por outro lado, o método não genérico List<T>.ForEach pertence à classe genérica List<T>, portanto, ele simplesmente usa o parâmetro do tipo de sua classe.A classe é fortemente tipada, portanto, o método pode ser um método de instância. |
O delegado genérico Predicate<T> representa um método que determina se um determinado elemento atende aos critérios que você definir.Você pode usá-lo com os seguintes métodos genéricos estático de Array Para pesquisar um elemento ou um conjunto de elementos: Exists<T>, Find<T>, FindAll<T>, FindIndex, FindLast<T>, FindLastIndex, e TrueForAll<T>.
Predicate<T> também funciona com os correspondentes métodos de instâcia não genéricos da classe genérica List<T>.
O delegado genérico Comparison<T> permite a você fornecer uma ordem de classificação para matriz ou lista de elementos que não têm um ordem de classificação nativa, ou para substituir a ordem de classificação nativa.Crie um método que realize a comparação, crie uma instância do delegado Comparison<T> para representar o método e, em seguida, passe a matriz e o delegado para o método estático genérico.Array.Sort<T>(array<T[], Comparison<T>).A classe genérica List<T> fornece uma sobrecarga do correspondente método de instância, List<T>.Sort(Comparison<T>).
O delegado genérico Converter<TInput, TOutput> permite que você defina uma conversão entre dois tipos e converta uma matriz de um tipo em uma matriz do outro, ou converta uma lista de um tipo em uma lista d outro.Crie um método que converta os elementos de uma lista existente para um novo tipo, crie uma instância para representar o método e use o método estático genérico Array.ConvertAll<TInput, TOutput> para produzir uma matriz do novo tipo a partir da matriz original, ou o método de instância genérico List<T>.ConvertAll<TOutput> para produzir uma lista do novo tipo a partir da lista original.
Encadeando representantes
Muitas dos métodos que usam esses delegados retornam uma matriz ou Lista, que pode ser passada para outro método.Por exemplo, se você quiser selecionar determinados elementos da matriz, converter esses elementos em um novo tipo e salvá-las em uma nova matriz, você pode passar a matriz retornada pelo método genérico FindAll<T> para o método genérico ConvertAll<TInput, TOutput>.Se o novo tipo de elemento não possui um ordem de classificação natural, você pode passar a matriz retornada pelo método genérico ConvertAll<TInput, TOutput> para método genérico Sort<T>(array<T[], Comparison<T>).
Consulte também
Conceitos
Visão geral das classes genéricas no .NET Framework
Coleções Genéricas na .NET Framework
Vantagens e Limitações dos Genéricos
Referência
System.Collections.ObjectModel