Compartilhar via


Tipos de coleção usados com frequência

Os tipos de coleção representam diferentes maneiras de coletar dados, como tabelas de hash, filas, pilhas, sacos, dicionários e listas.

Todas as coleções são baseadas, direta ou indiretamente, nas interfaces ICollection ou ICollection<T>. IList e IDictionary seus equivalentes genéricos derivam dessas duas interfaces.

Em coleções baseadas IList ou diretamente em ICollection, cada elemento contém apenas um valor. Esses tipos incluem:

Em coleções baseadas na IDictionary interface, cada elemento contém uma chave e um valor. Esses tipos incluem:

A KeyedCollection<TKey,TItem> classe é exclusiva porque é uma lista de valores com chaves inseridas nos valores. Como resultado, ele se comporta como uma lista e como um dicionário.

Quando você precisar de acesso à coleção com multithread eficiente, use as coleções genéricas no namespace System.Collections.Concurrent.

As classes Queue e Queue<T> fornecem listas do tipo primeiro a entrar, primeiro a sair. As classes Stack e Stack<T> fornecem listas do tipo último a entrar, primeiro a sair.

Tipagem forte

Coleções genéricas são a melhor solução para tipagem forte. Por exemplo, adicionar um elemento de qualquer tipo, exceto um Int32, a uma coleção List<Int32> provoca um erro de tempo de compilação. No entanto, se a linguagem não der suporte a genéricos, o System.Collections namespace incluirá classes base abstratas que você pode estender para criar classes de coleção fortemente tipadas. Essas classes base incluem:

Como as coleções variam

As coleções variam na forma como armazenam, classificam e comparam elementos e como executam pesquisas.

A SortedList classe e a SortedList<TKey,TValue> classe genérica fornecem versões classificadas da Hashtable classe e da Dictionary<TKey,TValue> classe genérica.

Todas as coleções usam índices baseados em zero, exceto Array, o que permite matrizes que não são baseadas em zero.

Você pode acessar os elementos de um SortedList ou um KeyedCollection<TKey,TItem> pela chave ou pelo índice do elemento. Você só pode acessar os elementos de um Hashtable ou um Dictionary<TKey,TValue> pela chave do elemento.

Usar LINQ com tipos de coleção

O recurso LINQ to Objects fornece um padrão comum para acessar objetos na memória de qualquer tipo que implemente IEnumerable ou IEnumerable<T>. As consultas LINQ têm vários benefícios em relação aos constructos padrão, como foreach loops:

  • Eles são concisos e fáceis de entender.
  • Eles podem filtrar, ordenar e agrupar dados.
  • Eles podem melhorar o desempenho.

Para obter mais informações, consulte LINQ to Objects (C#), LINQ to Objects (Visual Basic) e Parallel LINQ (PLINQ).

Título Descrição
Coleções e estruturas de dados Discute os vários tipos de coleção disponíveis no .NET, incluindo pilhas, filas, listas, matrizes e dicionários.
Tipos de coleção de tabela de hash e dicionário Descreve as características de tipos de dicionário genéricos e não genéricos baseados em hash.
Tipos de coleção ordenados Descreve classes que fornecem funcionalidade de classificação para listas e conjuntos.
Genéricos Descreve o recurso genérico, incluindo coleções genéricas, delegados e interfaces fornecidas pelo .NET. Fornece links à documentação de recursos para C#, Visual Basic e Visual C++ e para oferecer suporte a tecnologias, tais como a de reflexão.

Referência

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>