Compartilhar via


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.

Para os programas destinados a .NET Framework versão 4 ou posterior, você deve usar as classes de coleção genérica de System.Collections.Concurrent namespace quando vários segmentos que podem adicionar ou remover itens da coleção simultaneamente.

Os seguintes tipos genéricos correspondem aos tipos de coleção existentes:

Tipos adicionais

Vários tipos de coleção genérica não possuem contrapartes não genérico. Eles incluem o seguinte:

LINQ para Objetos

LINQ to Objects o recurso de permite usar consultas LINQ para acessar objetos em memória, como o tipo de objeto implementa o System.Collections.IEnumerable ou System.Collections.Generic.IEnumerable<T> interface. 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 e Parallel LINQ PLINQ).

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. O SortedDictionary<TKey, TValue> e SortedList<TKey, TValue> classes também têm esse recurso. Além disso, essas classes permitem especificar comparadores, quando a coleção é criada. De modo similar, o Dictionary<TKey, TValue> e KeyedCollection<TKey, TItem> classes permitem que você especifique seu próprio comparadores de igualdade.

Consulte também

Conceitos

Tipos de Coleção Comumente Usadas

Classes genéricas no .NET Framework