Colecciones genéricas en .NETGeneric Collections in .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.The .NET class library provides a number of generic collection classes in the System.Collections.Generic and System.Collections.ObjectModel namespaces. Para obtener información más detallada sobre estas clases, vea Tipos de colección utilizados normalmente.For more detailed information about these classes, see Commonly Used Collection Types.

System.Collections.GenericSystem.Collections.Generic

Muchos de los tipos de colección genéricos son análogos directos de tipos no genéricos.Many of the generic collection types are direct analogs of nongeneric types. 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.Dictionary<TKey,TValue> is a generic version of Hashtable; it uses the generic structure KeyValuePair<TKey,TValue> for enumeration instead of DictionaryEntry.

List<T> es una versión genérica de ArrayList.List<T> is a generic version of ArrayList. Hay clases Queue<T> y Stack<T> genéricas que se corresponden con las versiones no genéricas.There are generic Queue<T> and Stack<T> classes that correspond to the nongeneric versions.

Hay versiones genéricas y no genéricas de SortedList<TKey,TValue>.There are generic and nongeneric versions of SortedList<TKey,TValue>. Ambas versiones son híbridos de un diccionario y una lista.Both versions are hybrids of a dictionary and a list. La clase genérica SortedDictionary<TKey,TValue> es un diccionario puro y no tiene ninguna homóloga no genérica.The SortedDictionary<TKey,TValue> generic class is a pure dictionary and has no nongeneric counterpart.

La clase genérica LinkedList<T> es una lista vinculada genuina.The LinkedList<T> generic class is a true linked list. No tiene ninguna homóloga no genérica.It has no nongeneric counterpart.

System.Collections.ObjectModelSystem.Collections.ObjectModel

La clase genérica Collection<T> proporciona una clase base para derivar sus propios tipos de colección genéricos.The Collection<T> generic class provides a base class for deriving your own generic collection types. 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>.The ReadOnlyCollection<T> class provides an easy way to produce a read-only collection from any type that implements the IList<T> generic interface. La clase genérica KeyedCollection<TKey,TItem> proporciona una manera de almacenar objetos que contienen sus propias claves.The KeyedCollection<TKey,TItem> generic class provides a way to store objects that contain their own keys.

Otros tipos genéricosOther Generic Types

La estructura genérica Nullable<T> permite usar tipos de valor como si se les pudiera asignar el valor null.The Nullable<T> generic structure allows you to use value types as if they could be assigned null. Esto puede ser útil para trabajar con consultas de base de datos en las que pueden faltar campos que contienen tipos de valor.This can be useful when working with database queries, where fields that contain value types can be missing. El parámetro de tipo genérico puede ser cualquier tipo de valor.The generic type parameter can be any value type.

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.In C# and Visual Basic, it is not necessary to use Nullable<T> explicitly because the language has syntax for nullable types. Vea Tipos que aceptan valores NULL (Guía de programación de C#) y Tipos que admiten valores NULL (Visual Basic).See Nullable types (C# Programming Guide) and Nullable value types (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.The ArraySegment<T> generic structure provides a way to delimit a range of elements within a one-dimensional, zero-based array of any type. El parámetro de tipo genérico es el tipo de los elementos de la matriz.The generic type parameter is the type of the array's elements.

El delegado genérico EventHandler<TEventArgs> elimina la necesidad de declarar un tipo de delegado para controlar los eventos, si su evento sigue el patrón de control de eventos que usa .NET Framework.The EventHandler<TEventArgs> generic delegate eliminates the need to declare a delegate type to handle events, if your event follows the event-handling pattern used by the .NET Framework. Por ejemplo, supongamos que ha creado una clase MyEventArgs, derivada de EventArgs, para contener los datos del evento.For example, suppose you have created a MyEventArgs class, derived from EventArgs, to hold the data for your event. Puede declarar el evento de la siguiente manera:You can then declare the event as follows:

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

Vea tambiénSee also