Coleções Genéricas na .NET Framework

Este tópico fornece uma visão geral das classes genéricas e outros tipos genéricos na .NET Framework.

Coleções Genéricas na .NET Framework

A biblioteca de classes da .NET Framework fornece inúmeras classes genéricas de coleções nos namespaces System.Collections.Generic e System.Collections.ObjectModel. Para obter mais informações sobre essas classes, consulte Tipos de Coleção Comumente Usadas.

System.Collections.Generic

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

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

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

A classe genérica LinkedList<T> é uma verdadeira lista encadeada. Ela não possui contraparte não genérica.

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 de 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 contenham suas próprias chaves.

Outros Tipos Genéricos

A estrutura genérica Nullable<T> permite que você use os tipos de valor como se a eles pudesse ser atribuído null. Isso pode ser útil ao trabalhar com consultas de banco de dados, onde 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

Em C# não é necessário usar Nullable<T> explicitamente porque a linguagem possui sintaxe para tipos anuláveis.

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

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

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

Consulte também

Referência

System.Collections.Generic

System.Collections.ObjectModel

Conceitos

Classes genéricas no .NET Framework

Representantes Genéricos para Manipulação de Matrizes e Listas

Interfaces Genéricas

Vantagens e Limitações dos Genéricos