Quando Usar Coleções Genéricas
Geralmente, é recomendável usar coleções genéricas, porque você ganha a vantagem imediata de segurança de tipo sem ter de derivar de um tipo de coleção base e implementar membros específicos do tipo.Tipos de coleção genérica também geralmente executar melhor do que os tipos de coleção não genérica correspondentes (e melhor do que os tipos derivados de tipos de coleção base não genéricos) quando os elementos da coleção são tipos de valor, porque com genéricos não é necessário colocar os elementos em caixas.
Os seguintes tipos genéricos correspondem aos tipos de coleção existentes:
Dictionary<TKey, TValue> é a classe genérica que corresponde ao Hashtable.
Collection<T> é a classe genérica que corresponde ao CollectionBase.Collection<T> pode ser usado sistema autônomo uma classe base, mas ao contrário CollectionBase, não é abstrata. Isso o torna muito mais fácil de usar.
ReadOnlyCollection<T> é a classe genérica que corresponde ao ReadOnlyCollectionBase.ReadOnlyCollection<T> não é abstrata e tem um construtor que facilita a expor um existente List<T> sistema autônomo uma coleção somente leitura.
As classes genéricas Queue<T>, Stack<T>, e SortedList<TKey, TValue> correspondem às respectivas classes não genéricas com os mesmos nomes.
Tipos adicionais
Há vários tipos coleção genérica que não têm correspondentes não genéricos:
LinkedList<T> é uma lista vinculada de uso geral que fornece operações O(1) de inserção e remoção.
SortedDictionary<TKey, TValue> é um dicionário classificado com operações O (log n) de inserção e de recuperação, o que o torna uma alternativa útil para SortedList<TKey, TValue>.
KeyedCollection<TKey, TItem> é um híbrido entre uma lista e um dicionário, que fornece uma maneira de armazenar objetos que contêm suas próprias chaves.
LINQ para Objetos
O recurso LINQ para Objetos permite aos desenvolvedores usar consultas LINQ para acessar objetos na memória, desde que o tipo de objeto implemente IEnumerable ou IEnumerable<T>.Consultas LINQ fornecem um padrão comum para acessar dados, são geralmente mais concisas e legíveis que loops foreach padrão e fornecem recursos de filtragem, classificação e agrupamento.Consultas LINQ também podem melhorar o desempenho.Para obter mais informações, consulte LINQ para Objetos.
Funcionalidade adicional
Alguns dos tipos genéricos possuem funcionalidades que não são encontradas nos tipos de coleção não genéricas.Por exemplo, a classe List<T>, que corresponde à classe não genérica ArrayList, tem um número de métodos que aceitam representantes genéricos, como representante Predicate<T> que permite que você especifique métodos para pesquisar a lista, o representante Action<T> que representa métodos que atuam em cada elemento da lista, e o representante Converter<TInput, TOutput> que permite que você defina conversões entre tipos.
A classe List<T> permite que você especifique suas próprias implementações IComparer<T> de interface genérica para classificação e pesquisa da lista.As classes SortedDictionary<TKey, TValue> e SortedList<TKey, TValue> também têm esse recurso, e além disso permitem que os comparadores sejam especificados quando a coleção é criada.De maneira semelhante, as classes Dictionary<TKey, TValue> e KeyedCollection<TKey, TItem> permitem que você especifique seus próprios comparadores de igualdade.
Consulte também
Conceitos
Visão geral das classes genéricas no .NET Framework