Coleções genéricas no .NET
A biblioteca de classes do .NET fornece várias classes de coleção genérica nos namespaces System.Collections.Generic e System.Collections.ObjectModel. Para obter informações detalhadas sobre essas classes, consulte Tipos de coleção comumente usados.
System.Collections.Generic
Muitos dos tipos de coleção genéricos são diretamente análogos aos tipos não genéricos. Dictionary<TKey,TValue> é uma versão genérica de Hashtable; ele usa a estrutura genérica KeyValuePair<TKey,TValue> para enumeração em vez de DictionaryEntry.
List<T> é uma versão genérica de ArrayList. Há classes Queue<T> e Stack<T> genéricas que correspondem às versões não genéricas.
Há versões genéricas e não genéricas de SortedList<TKey,TValue>. As duas versões são híbridas de um dicionário e de uma lista. A classe genérica SortedDictionary<TKey,TValue> é um dicionário puro e não tem nenhum equivalente não genérico.
A classe genérica LinkedList<T> é uma verdadeira lista vinculada. Não tem nenhum equivalente não genérico.
System.Collections.ObjectModel
A classe genérica Collection<T> fornece uma classe base para derivar seus próprios tipos de coleção genérica. A classe ReadOnlyCollection<T> fornece uma maneira fácil de produzir uma coleção somente leitura de qualquer tipo que implementa a interface genérica IList<T>. A classe genérica KeyedCollection<TKey,TItem> fornece uma maneira de armazenar objetos que contêm suas próprias chaves.
Outros tipos genéricos
A estrutura genérica Nullable<T> 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, nas quais os campos que contêm tipos de valor podem estar ausentes. O parâmetro de tipo genérico pode ser qualquer tipo de valor.
Observação
No C# e Visual Basic não é necessário usar Nullable<T> explicitamente, pois a linguagem tem sintaxe para tipos que permitem valor nulo. Consulte Tipos que permitem valor nulo (Guia de programação em C#) e Tipos de valor que permitem valor nulo (Visual Basic).
A estrutura genérica ArraySegment<T> fornece uma maneira de delimitar um intervalo 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 delegado genérico EventHandler<TEventArgs> 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 por .NET. Por exemplo, vamos supor que você tenha criado uma classe MyEventArgs
, derivada de EventArgs, para manter os dados para o 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)