Compartir a través de


Colecciones genéricas en .NET Framework

Actualización: noviembre 2007

En este tema se proporciona una introducción a las clases de colección genéricas y otros tipos genéricos de .NET Framework.

Colecciones genéricas en .NET Framework

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

System.Collections.Generic

Muchos de los tipos genéricos de la colección son análogos directos de tipos no genéricos. Dictionary<TKey, TValue> es una versión genérica de Hashtable; utiliza 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>. Estas dos versiones son híbridos entre un diccionario y una lista. La clase genérica SortedDictionary<TKey, TValue> es un diccionario puro y no tiene ningún homólogo no genérico.

La clase genérica LinkedList<T> es una auténtica lista vinculada. No tiene ningún homólogo no genérico.

System.Collections.ObjectModel

La clase genérica Collection<T> proporciona una clase base de la que derivar sus propios tipos de colección genéricos. La clase ReadOnlyCollection<T> proporciona una manera sencilla de generar una colección de sólo lectura de cualquier tipo que implemente 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> le permite utilizar tipos de valor como si se les pudiera asignar null. Esto puede ser útil al trabajar con consultas de base de datos, donde pueden faltar campos que contienen tipos de valor. El parámetro de tipo genérico puede ser cualquier tipo de valor.

Nota:

En C#, no es necesario utilizar explícitamente Nullable<T>, porque el lenguaje tiene sintaxis para tipos que aceptan valores null.

La estructura genérica ArraySegment<T> proporciona una manera de delimitar un intervalo de elementos dentro de 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 su evento sigue el modelo de control de eventos utilizado por .NET Framework. Por ejemplo, suponga ha creado una clase MyEventArgs, derivada de EventArgs, para contener los datos de su evento. A continuación puede declarar el evento de la siguiente forma:

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

Vea también

Conceptos

Información general sobre los genéricos de .NET Framework

Delegados genéricos para manipular matrices y listas

Interfaces genéricas

Ventajas y limitaciones de genéricos

Referencia

System.Collections.Generic

System.Collections.ObjectModel

Otros recursos

Genéricos en .NET Framework