Colecciones genéricas en .NET

La biblioteca de clases de .NET ofrece varias clases de colección genéricas en los espacios de nombres System.Collections.Generic y System.Collections.ObjectModel. Para obtener información más detallada sobre estas clases, vea Tipos de colección utilizados normalmente.

System.Collections.Generic

Muchos de los tipos de colección genéricos son análogos directos de tipos no genéricos. Dictionary<TKey,TValue> es una versión genérica de Hashtable; usa la estructura genérica KeyValuePair<TKey,TValue> para la enumeración en lugar de DictionaryEntry.

List<T> es una versión genérica de ArrayList. Hay clases Queue<T> y Stack<T> genéricas que se corresponden con las versiones no genéricas.

Hay versiones genéricas y no genéricas de SortedList<TKey,TValue>. Ambas versiones son híbridos de un diccionario y una lista. La clase genérica SortedDictionary<TKey,TValue> es un diccionario puro y no tiene ninguna homóloga no genérica.

La clase genérica LinkedList<T> es una lista vinculada genuina. No tiene ninguna homóloga no genérica.

System.Collections.ObjectModel

La clase genérica Collection<T> proporciona una clase base para derivar sus propios tipos de colección genéricos. La clase ReadOnlyCollection<T> proporciona una manera sencilla de generar una colección de solo lectura de cualquier tipo que implementa la interfaz genérica IList<T>. La clase genérica KeyedCollection<TKey,TItem> proporciona una manera de almacenar objetos que contienen sus propias claves.

Otros tipos genéricos

La estructura genérica Nullable<T> permite usar tipos de valor como si se les pudiera asignar el valor null. Esto puede ser útil para trabajar con consultas de base de datos en las que pueden faltar campos que contienen tipos de valor. El parámetro de tipo genérico puede ser cualquier tipo de valor.

Nota

En C# y Visual Basic no hay que usar Nullable<T> explícitamente porque el lenguaje tiene sintaxis para tipos que aceptan valores NULL. Consulte Tipos de valor que admiten un valor NULL (referencia de C#) y Tipos de valor que admiten un valor NULL (Visual Basic).

La estructura genérica ArraySegment<T> proporciona una manera de delimitar un intervalo de elementos en una matriz unidimensional basada en cero de cualquier tipo. El parámetro de tipo genérico es el tipo de los elementos de la matriz.

El delegado genérico EventHandler<TEventArgs> elimina la necesidad de declarar un tipo de delegado para controlar los eventos, si el evento sigue el patrón de control de eventos que usa .NET. Por ejemplo, supongamos que ha creado una clase MyEventArgs, derivada de EventArgs, para contener los datos del evento. Puede declarar el evento de la siguiente manera:

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

Vea también