Coleções genéricas no .NET

A biblioteca de classes .NET fornece várias classes de coleção genéricas nos System.Collections.Generic namespaces e System.Collections.ObjectModel . Para obter informações mais detalhadas sobre essas classes, consulte Tipos de coleção comumente usados.

System.Collections.Generic

Muitos dos tipos de coleção genéricos são análogos diretos de tipos não genéricos. Dictionary<TKey,TValue> é uma versão genérica de Hashtable; usa a estrutura KeyValuePair<TKey,TValue> genérica para enumeração em vez de DictionaryEntry.

List<T> é uma versão genérica do ArrayList. Existem genéricos Queue<T> e Stack<T> classes que correspondem às versões não genéricas.

Existem versões genéricas e não genéricas do SortedList<TKey,TValue>. Ambas as versões são híbridas de um dicionário e uma lista. A SortedDictionary<TKey,TValue> classe genérica é um dicionário puro e não tem contrapartida não genérica.

A LinkedList<T> classe genérica é uma verdadeira lista vinculada. Não tem contrapartida não genérica.

System.Collections.ObjectModel

A Collection<T> classe generic fornece uma classe base para derivar seus próprios tipos de coleção genérica. A ReadOnlyCollection<T> classe fornece uma maneira fácil de produzir uma coleção somente leitura de qualquer tipo que implementa a IList<T> interface genérica. A KeyedCollection<TKey,TItem> classe generic fornece uma maneira de armazenar objetos que contêm suas próprias chaves.

Outros tipos genéricos

A Nullable<T> estrutura genérica permite que você use tipos de valor como se eles pudessem ser atribuídos null. Isso pode ser útil ao trabalhar com consultas de banco de dados, onde campos que contêm tipos de valor podem estar faltando. O parâmetro de tipo genérico pode ser qualquer tipo de valor.

Nota

Em C# e Visual Basic, não é necessário usar Nullable<T> explicitamente porque a linguagem tem sintaxe para tipos anuláveis. Consulte Tipos de valor anulável (referência C#) e Tipos de valor anulável (Visual Basic).

A ArraySegment<T> estrutura genérica fornece uma maneira de delimitar uma gama de elementos dentro de uma matriz unidimensional, baseada em zero de qualquer tipo. O parâmetro de tipo genérico é o tipo dos elementos da matriz.

O EventHandler<TEventArgs> delegado genérico elimina a necessidade de declarar um tipo de delegado para manipular eventos, se o evento seguir o padrão de manipulação de eventos usado pelo .NET. Por exemplo, suponha que você tenha criado uma MyEventArgs classe, derivada de EventArgs, para armazenar os dados do seu evento. Em seguida, você pode declarar o evento da seguinte maneira:

public:
    event EventHandler<MyEventArgs^>^ MyEvent;
public event EventHandler<MyEventArgs> MyEvent;
Public Event MyEvent As EventHandler(Of MyEventArgs)

Consulte também