Esta documentación está archivada y no tiene mantenimiento.

ICollection<T> (Interfaz)

Define métodos para manipular colecciones genéricas.

Espacio de nombres:  System.Collections.Generic
Ensamblado:  mscorlib (en mscorlib.dll)

public interface ICollection<T> : IEnumerable<T>, 
	IEnumerable

Parámetros de tipo

T

Tipo de los elementos de la colección.

El tipo ICollection<T> expone los siguientes miembros.

  NombreDescripción
Propiedad públicaCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifCountObtiene el número de elementos incluidos en ICollection<T>.
Propiedad públicaCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifIsReadOnlyObtiene un valor que indica si ICollection<T> es de solo lectura.
Arriba

  NombreDescripción
Método públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAddAgrega un elemento a ICollection<T>.
Método públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifClearQuita todos los elementos de ICollection<T>.
Método públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifContainsDetermina si ICollection<T> contiene un valor específico.
Método públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifCopyToCopia los elementos de la interfaz ICollection<T> a un objeto Array, a partir de un índice determinado de la clase Array.
Método públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGetEnumerator()Devuelve un enumerador que recorre en iteración una colección. (Se hereda de IEnumerable).
Método públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGetEnumerator()Devuelve un enumerador que recorre en iteración la colección. (Se hereda de IEnumerable<T>).
Método públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifRemoveQuita la primera aparición de un objeto específico de ICollection<T>.
Arriba

  NombreDescripción
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAggregate<T>(Func<T, T, T>)Sobrecargado. Aplica una función de acumulador a una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAggregate<T, TAccumulate>(TAccumulate, Func<TAccumulate, T, TAccumulate>)Sobrecargado. Aplica una función de acumulador a una secuencia. El valor de inicialización especificado se utiliza como valor de inicio del acumulador. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAggregate<T, TAccumulate, TResult>(TAccumulate, Func<TAccumulate, T, TAccumulate>, Func<TAccumulate, TResult>)Sobrecargado. Aplica una función de acumulador a una secuencia. El valor de inicialización especificado se utiliza como valor inicial del acumulador y la función especificada se utiliza para seleccionar el valor resultante. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAll<T>Determina si todos los elementos de una secuencia satisfacen una condición. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAny<T>()Sobrecargado. Determina si una secuencia contiene elementos. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAny<T>(Func<T, Boolean>)Sobrecargado. Determina si algún elemento de una secuencia satisface una condición. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAsEnumerable<T>Devuelve la entrada tipificada como IEnumerable<T>. (Definido por Enumerable).
Método de extensión públicoAsParallel()Sobrecargado. Habilita la paralelización de una consulta. (Definido por ParallelEnumerable).
Método de extensión públicoAsParallel<T>()Sobrecargado. Habilita la paralelización de una consulta. (Definido por ParallelEnumerable).
Método de extensión público92t2ye13.PortableClassLibrary(es-es,VS.100).gifAsQueryable()Sobrecargado. Convierte una interfaz IEnumerable en IQueryable. (Definido por Queryable).
Método de extensión público92t2ye13.PortableClassLibrary(es-es,VS.100).gifAsQueryable<T>()Sobrecargado. Convierte una interfaz IEnumerable<T> genérica en una interfaz IQueryable<T> genérica. (Definido por Queryable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Decimal>)Sobrecargado. Calcula el promedio de una secuencia de valores Decimal que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Nullable<Decimal>>)Sobrecargado. Calcula el promedio de una secuencia de valores Decimal que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Double>)Sobrecargado. Calcula el promedio de una secuencia de valores Double que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Nullable<Double>>)Sobrecargado. Calcula el promedio de una secuencia de valores Double que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Int32>)Sobrecargado. Calcula el promedio de una secuencia de valores Int32 que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Nullable<Int32>>)Sobrecargado. Calcula el promedio de una secuencia de valores Int32 que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Int64>)Sobrecargado. Calcula el promedio de una secuencia de valores Int64 que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Nullable<Int64>>)Sobrecargado. Calcula el promedio de una secuencia de valores Int64 que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Single>)Sobrecargado. Calcula el promedio de una secuencia de valores Single que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifAverage<T>(Func<T, Nullable<Single>>)Sobrecargado. Calcula el promedio de una secuencia de valores Single que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifCast<TResult>Convierte los elementos de IEnumerable en el tipo especificado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifConcat<T>Concatena dos secuencias. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifContains<T>(T)Sobrecargado. Determina si una secuencia contiene un elemento especificado utilizando el comparador de igualdad predeterminado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifContains<T>(T, IEqualityComparer<T>)Sobrecargado. Determina si una secuencia contiene un elemento especificado utilizando un objeto IEqualityComparer<T> determinado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifCount<T>()Sobrecargado. Devuelve el número de elementos de una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifCount<T>(Func<T, Boolean>)Sobrecargado. Devuelve un número que representa cuántos elementos de la secuencia especificada satisfacen una condición. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifDefaultIfEmpty<T>()Sobrecargado. Devuelve los elementos de la secuencia especificada o el valor predeterminado del parámetro de tipo en una colección singleton si la secuencia está vacía. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifDefaultIfEmpty<T>(T)Sobrecargado. Devuelve los elementos de la secuencia especificada o el valor especificado en una colección singleton si la secuencia está vacía. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifDistinct<T>()Sobrecargado. Devuelve diversos elementos de una secuencia utilizando el comparador de igualdad predeterminado para comparar los valores. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifDistinct<T>(IEqualityComparer<T>)Sobrecargado. Devuelve diversos elementos de una secuencia utilizando un objeto IEqualityComparer<T> especificado para comparar los valores. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifElementAt<T>Devuelve el elemento situado en un índice especificado de una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifElementAtOrDefault<T>Devuelve el elemento situado en un índice especificado de una secuencia o un valor predeterminado si el índice está fuera del intervalo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifExcept<T>(IEnumerable<T>)Sobrecargado. Proporciona la diferencia de conjuntos de dos secuencias utilizando el comparador de igualdad predeterminado para comparar los valores. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifExcept<T>(IEnumerable<T>, IEqualityComparer<T>)Sobrecargado. Proporciona la diferencia de conjuntos de dos secuencias utilizando el objeto IEqualityComparer<T> especificado para comparar los valores. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifFirst<T>()Sobrecargado. Devuelve el primer elemento de una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifFirst<T>(Func<T, Boolean>)Sobrecargado. Devuelve el primer elemento de una secuencia que satisface una condición especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifFirstOrDefault<T>()Sobrecargado. Devuelve el primer elemento de una secuencia o un valor predeterminado si la secuencia no contiene elementos. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifFirstOrDefault<T>(Func<T, Boolean>)Sobrecargado. Devuelve el primer elemento de la secuencia que satisface una condición o un valor predeterminado si no se encuentra dicho elemento. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey>(Func<T, TKey>)Sobrecargado. Agrupa los elementos de una secuencia según una función del selector de claves especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey>(Func<T, TKey>, IEqualityComparer<TKey>)Sobrecargado. Agrupa los elementos de una secuencia según una función del selector de claves especificada y compara las claves usando un comparador indicado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>)Sobrecargado. Agrupa los elementos de una secuencia según una función del selector de claves especificada y proyecta los elementos de cada grupo utilizando una función determinada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey, TResult>(Func<T, TKey>, Func<TKey, IEnumerable<T>, TResult>)Sobrecargado. Agrupa los elementos de una secuencia según una función del selector de claves especificada y crea un valor de resultado a partir de cada grupo y su clave. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>, IEqualityComparer<TKey>)Sobrecargado. Agrupa los elementos de una secuencia conforme a una función del selector de claves. Las claves se comparan utilizando un comparador y los elementos de cada grupo se proyectan utilizando una función especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey, TResult>(Func<T, TKey>, Func<TKey, IEnumerable<T>, TResult>, IEqualityComparer<TKey>)Sobrecargado. Agrupa los elementos de una secuencia según una función del selector de claves especificada y crea un valor de resultado a partir de cada grupo y su clave. Las claves se comparan utilizando un comparador especificado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey, TElement, TResult>(Func<T, TKey>, Func<T, TElement>, Func<TKey, IEnumerable<TElement>, TResult>)Sobrecargado. Agrupa los elementos de una secuencia según una función del selector de claves especificada y crea un valor de resultado a partir de cada grupo y su clave. Los elementos de cada grupo se proyectan utilizando una función determinada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupBy<T, TKey, TElement, TResult>(Func<T, TKey>, Func<T, TElement>, Func<TKey, IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)Sobrecargado. Agrupa los elementos de una secuencia según una función del selector de claves especificada y crea un valor de resultado a partir de cada grupo y su clave. Los valores de las claves se comparan utilizando un comparador especificado y los elementos de cada grupo se proyectan utilizando una función especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupJoin<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, IEnumerable<TInner>, TResult>)Sobrecargado. Establece una correlación entre los elementos de dos secuencias en función de la igualdad de sus claves y agrupa los resultados. El comparador de igualdad predeterminado se usa para comparar claves. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifGroupJoin<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, IEnumerable<TInner>, TResult>, IEqualityComparer<TKey>)Sobrecargado. Establece una correlación entre los elementos de dos secuencias basándose en la igualdad de clave y agrupa los resultados. Se usa un objeto IEqualityComparer<T> especificado para comparar claves. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifIntersect<T>(IEnumerable<T>)Sobrecargado. Proporciona la intersección de conjuntos de dos secuencias utilizando el comparador de igualdad predeterminado para comparar los valores. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifIntersect<T>(IEnumerable<T>, IEqualityComparer<T>)Sobrecargado. Proporciona la intersección de conjuntos de dos secuencias utilizando el objeto IEqualityComparer<T> especificado para comparar los valores. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifJoin<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, TInner, TResult>)Sobrecargado. Establece una correlación entre los elementos de dos secuencias en función de la coincidencia de sus claves. El comparador de igualdad predeterminado se usa para comparar claves. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifJoin<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, TInner, TResult>, IEqualityComparer<TKey>)Sobrecargado. Relaciona los elementos de dos secuencias basándose en claves coincidentes. Se usa un objeto IEqualityComparer<T> especificado para comparar claves. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifLast<T>()Sobrecargado. Devuelve el último elemento de una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifLast<T>(Func<T, Boolean>)Sobrecargado. Devuelve el último elemento de una secuencia que satisface una condición especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifLastOrDefault<T>()Sobrecargado. Devuelve el último elemento de una secuencia o un valor predeterminado si la secuencia no contiene elementos. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifLastOrDefault<T>(Func<T, Boolean>)Sobrecargado. Devuelve el último elemento de una secuencia que satisface una condición o un valor predeterminado si no se encuentra dicho elemento. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifLongCount<T>()Sobrecargado. Devuelve un valor Int64 que representa el número total de elementos de una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifLongCount<T>(Func<T, Boolean>)Sobrecargado. Devuelve un valor Int64 que representa el número de elementos de una secuencia que satisfacen una condición. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>()Sobrecargado. Devuelve el valor máximo de una secuencia genérica. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Decimal>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Decimal máximo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Nullable<Decimal>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Decimal máximo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Double>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Double máximo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Nullable<Double>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Double máximo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Int32>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int32 máximo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Nullable<Int32>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int32 máximo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Int64>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int64 máximo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Nullable<Int64>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int64 máximo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Single>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Single máximo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T>(Func<T, Nullable<Single>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Single máximo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMax<T, TResult>(Func<T, TResult>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia genérica y devuelve el valor máximo resultante. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>()Sobrecargado. Devuelve el valor mínimo de una secuencia genérica. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Decimal>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Decimal mínimo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Nullable<Decimal>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Decimal mínimo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Double>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Double mínimo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Nullable<Double>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Double mínimo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Int32>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int32 mínimo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Nullable<Int32>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int32 mínimo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Int64>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int64 mínimo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Nullable<Int64>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Int64 mínimo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Single>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Single mínimo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T>(Func<T, Nullable<Single>>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia y devuelve el valor Single mínimo que acepta valores NULL. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifMin<T, TResult>(Func<T, TResult>)Sobrecargado. Invoca una función de transformación en cada elemento de una secuencia genérica y devuelve el valor mínimo resultante. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifOfType<TResult>Filtra los elementos de IEnumerable en función de un tipo especificado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifOrderBy<T, TKey>(Func<T, TKey>)Sobrecargado. Ordena de manera ascendente los elementos de una secuencia en función de una clave. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifOrderBy<T, TKey>(Func<T, TKey>, IComparer<TKey>)Sobrecargado. Ordena de manera ascendente los elementos de una secuencia utilizando un comparador especificado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifOrderByDescending<T, TKey>(Func<T, TKey>)Sobrecargado. Ordena de manera descendente los elementos de una secuencia en función de una clave. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifOrderByDescending<T, TKey>(Func<T, TKey>, IComparer<TKey>)Sobrecargado. Ordena de manera descendente los elementos de una secuencia utilizando un comparador especificado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifReverse<T>Invierte el orden de los elementos de una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSelect<T, TResult>(Func<T, TResult>)Sobrecargado. Proyecta cada elemento de una secuencia en un nuevo formulario. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSelect<T, TResult>(Func<T, Int32, TResult>)Sobrecargado. Proyecta cada elemento de una secuencia en un nuevo formulario incorporando el índice del elemento. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSelectMany<T, TResult>(Func<T, IEnumerable<TResult>>)Sobrecargado. Proyecta cada elemento de una secuencia en una interfaz IEnumerable<T> y reduce las secuencias resultantes en una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSelectMany<T, TResult>(Func<T, Int32, IEnumerable<TResult>>)Sobrecargado. Proyecta cada elemento de una secuencia en una interfaz IEnumerable<T> y reduce las secuencias resultantes en una secuencia. El índice de cada elemento de origen se utiliza en el formulario proyectado de ese elemento. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSelectMany<T, TCollection, TResult>(Func<T, Int32, IEnumerable<TCollection>>, Func<T, TCollection, TResult>)Sobrecargado. Proyecta cada elemento de una secuencia en IEnumerable<T>, reduce las secuencias resultantes en una única secuencia e invoca una función del selector de resultados en cada elemento. El índice de cada elemento de origen se utiliza en el formulario proyectado intermedio de ese elemento. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSelectMany<T, TCollection, TResult>(Func<T, IEnumerable<TCollection>>, Func<T, TCollection, TResult>)Sobrecargado. Proyecta cada elemento de una secuencia en IEnumerable<T>, reduce las secuencias resultantes en una única secuencia e invoca una función del selector de resultados en cada elemento. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSequenceEqual<T>(IEnumerable<T>)Sobrecargado. Determina si dos secuencias son iguales; para ello, se comparan sus elementos mediante el comparador de igualdad predeterminado para su tipo. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSequenceEqual<T>(IEnumerable<T>, IEqualityComparer<T>)Sobrecargado. Determina si dos secuencias son iguales; para ello, compara sus elementos utilizando una interfaz IEqualityComparer<T> especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSingle<T>()Sobrecargado. Devuelve el único elemento de una secuencia y produce una excepción si no hay exactamente un elemento en la secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSingle<T>(Func<T, Boolean>)Sobrecargado. Devuelve el único elemento de una secuencia que cumpla la condición especificada y produce una excepción si más de un elemento la cumple. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSingleOrDefault<T>()Sobrecargado. Devuelve el único elemento de una secuencia o un valor predeterminado si la secuencia está vacía; este método produce una excepción si hay más de un elemento en la secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSingleOrDefault<T>(Func<T, Boolean>)Sobrecargado. Devuelve el único elemento de una secuencia que cumpla la condición especificada, o bien, un valor predeterminado si ese elemento no existe; este método produce una excepción si varios elementos cumplen la condición. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSkip<T>Omite un número especificado de elementos en una secuencia y, a continuación, devuelve los elementos restantes. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSkipWhile<T>(Func<T, Boolean>)Sobrecargado. Omite los elementos de una secuencia siempre que el valor de una condición especificada sea true y, a continuación, devuelve los elementos restantes. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSkipWhile<T>(Func<T, Int32, Boolean>)Sobrecargado. Omite los elementos de una secuencia en tanto que el valor de una condición especificada sea true y, a continuación, devuelve los elementos restantes. El índice del elemento se usa en la lógica de la función de predicado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Decimal>)Sobrecargado. Calcula la suma de una secuencia de valores Decimal que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Nullable<Decimal>>)Sobrecargado. Calcula la suma de la secuencia de valores Decimal que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Double>)Sobrecargado. Calcula la suma de una secuencia de valores Double que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Nullable<Double>>)Sobrecargado. Calcula la suma de una secuencia de valores Double que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Int32>)Sobrecargado. Calcula la suma de una secuencia de valores Int32 que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Nullable<Int32>>)Sobrecargado. Calcula la suma de la secuencia de valores Int32 que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Int64>)Sobrecargado. Calcula la suma de una secuencia de valores Int64 que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Nullable<Int64>>)Sobrecargado. Calcula la suma de la secuencia de valores Int64 que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Single>)Sobrecargado. Calcula la suma de una secuencia de valores Single que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifSum<T>(Func<T, Nullable<Single>>)Sobrecargado. Calcula la suma de la secuencia de valores Single que aceptan valores NULL que se obtiene al invocar una función de transformación en cada elemento de la secuencia de entrada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifTake<T>Devuelve un número especificado de elementos contiguos desde el principio de una secuencia. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifTakeWhile<T>(Func<T, Boolean>)Sobrecargado. Devuelve los elementos de una secuencia en tanto que el valor de una condición especificada sea true. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifTakeWhile<T>(Func<T, Int32, Boolean>)Sobrecargado. Devuelve los elementos de una secuencia en tanto que el valor de una condición especificada sea true. El índice del elemento se usa en la lógica de la función de predicado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToArray<T>Crea una matriz a partir de un objeto IEnumerable<T>. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToDictionary<T, TKey>(Func<T, TKey>)Sobrecargado. Crea una clase Dictionary<TKey, TValue> a partir de una interfaz IEnumerable<T> según una función del selector de claves especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToDictionary<T, TKey>(Func<T, TKey>, IEqualityComparer<TKey>)Sobrecargado. Crea un objeto Dictionary<TKey, TValue> a partir de un objeto IEnumerable<T> según una función del selector de claves especificada y el comparador de claves. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToDictionary<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>)Sobrecargado. Crea un objeto Dictionary<TKey, TValue> a partir de un objeto IEnumerable<T> según el selector de claves especificado y las funciones del selector de elementos. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToDictionary<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>, IEqualityComparer<TKey>)Sobrecargado. Crea un objeto Dictionary<TKey, TValue> a partir de un objeto IEnumerable<T> según una función del selector de claves especificada, un comparador y una función del selector de elementos. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToList<T>Crea un objeto List<T> a partir de un objeto IEnumerable<T>. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToLookup<T, TKey>(Func<T, TKey>)Sobrecargado. Crea un objeto Lookup<TKey, TElement> a partir de un objeto IEnumerable<T> según una función del selector de claves especificada. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToLookup<T, TKey>(Func<T, TKey>, IEqualityComparer<TKey>)Sobrecargado. Crea un objeto Lookup<TKey, TElement> a partir de un objeto IEnumerable<T> según una función del selector de claves y el comparador de claves especificados. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToLookup<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>)Sobrecargado. Crea un objeto Lookup<TKey, TElement> a partir de un objeto IEnumerable<T> según el selector de claves especificado y las funciones del selector de elementos. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifToLookup<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>, IEqualityComparer<TKey>)Sobrecargado. Crea un objeto Lookup<TKey, TElement> a partir de un objeto IEnumerable<T> según una función del selector de claves, un comparador y una función del selector de elementos especificados. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifUnion<T>(IEnumerable<T>)Sobrecargado. Proporciona la unión de conjuntos de dos secuencias utilizando el comparador de igualdad predeterminado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifUnion<T>(IEnumerable<T>, IEqualityComparer<T>)Sobrecargado. Proporciona la unión de conjuntos de dos secuencias a través de un objeto IEqualityComparer<T> especificado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifWhere<T>(Func<T, Boolean>)Sobrecargado. Filtra una secuencia de valores en función de un predicado. (Definido por Enumerable).
Método de extensión públicoCompatible con XNA Framework92t2ye13.PortableClassLibrary(es-es,VS.100).gifWhere<T>(Func<T, Int32, Boolean>)Sobrecargado. Filtra una secuencia de valores en función de un predicado. El índice de cada elemento se usa en la lógica de la función de predicado. (Definido por Enumerable).
Método de extensión públicoZip<T, TSecond, TResult>Combina dos secuencias utilizando la función de predicado especificada. (Definido por Enumerable).
Arriba

La interfaz ICollection<T> es la interfaz base para las clases del espacio de nombres System.Collections.Generic.

La interfaz ICollection<T> amplía IEnumerable<T>; IDictionary<TKey, TValue> y IList<T> son interfaces más especializadas que amplían ICollection<T>. Una implementación de IDictionary<TKey, TValue> es una colección de pares de clave y valor, como la clase Dictionary<TKey, TValue>. Una implementación de IList<T> es una colección de valores a cuyos miembros se puede tener acceso por el índice, como la clase List<T>.

En caso de que ni la interfaz IDictionary<TKey, TValue> ni la interfaz IList<T> cumplan los requisitos de la colección requerida, la nueva clase de colección se derivará de la interfaz ICollection<T> para una mayor flexibilidad.

En el siguiente ejemplo se implementa la interfaz ICollection<T> para crear una colección de objetos Box personalizados denominada BoxCollection. Cada Box tiene el alto, la longitud y las propiedades de ancho que se utilizan para definir la igualdad. Se puede definir la igualdad como todas las dimensiones son iguales o el volumen es el mismo. La clase Box implementa la interfaz IEquatable<T> para definir la igualdad predeterminada cuando las dimensiones son iguales.

La clase BoxCollection implementa el método Contains para utilizar la igualdad predeterminada para determinar si Box está en la colección. El método Add utiliza este método para que cada Box agregado a la colección tenga un conjunto único de dimensiones. La clase BoxCollection también proporciona una sobrecarga del método Contains que toma un objeto EqualityComparer<T> especificado, como clases BoxSameVol y BoxSameDimensions en el ejemplo.

Este ejemplo también implementa una interfaz IEnumerator<T> para la clase BoxCollection para que se pueda enumerar la colección.


using System;
using System.Collections;
using System.Collections.Generic;

class Program
{

    static void Main(string[] args)
    {

        BoxCollection bxList = new BoxCollection();

        bxList.Add(new Box(10, 4, 6));
        bxList.Add(new Box(4, 6, 10));
        bxList.Add(new Box(6, 10, 4));
        bxList.Add(new Box(12, 8, 10));

        // Same dimensions. Cannot be added:
        bxList.Add(new Box(10, 4, 6));

        // Test the Remove method.
        PrintResults(bxList);
        Console.WriteLine("Removing 6x10x4");
        bxList.Remove(new Box(6, 10, 4));
        PrintResults(bxList);

        // Test the Contains method.
        Box BoxCheck = new Box(8, 12, 10);
        Console.WriteLine("Contains {0}x{1}x{2} by dimensions: {3}", 
            BoxCheck.Height.ToString(), BoxCheck.Length.ToString(), 
            BoxCheck.Width.ToString(), bxList.Contains(BoxCheck).ToString());

        // Test the Contains method overload with a specified equality comparer.
        Console.WriteLine("Contains {0}x{1}x{2} by volume: {3}", 
            BoxCheck.Height.ToString(), BoxCheck.Length.ToString(), 
            BoxCheck.Width.ToString(), bxList.Contains(BoxCheck, 
            new BoxSameVol()).ToString());

    }
    public static void PrintResults(BoxCollection bxList)
    {
        Console.WriteLine("\nHeight\tLength\tWidth\tHash Code");
        foreach (Box bx in bxList)
        {
            Console.WriteLine("{0}\t{1}\t{2}\t{3}",
                bx.Height.ToString(), bx.Length.ToString(), 
                bx.Width.ToString(), bx.GetHashCode().ToString());
        }

        // Results by manipulating the enumerator directly:

        //IEnumerator enumerator = bxList.GetEnumerator();
        //Console.WriteLine("\nHeight\tLength\tWidth\tHash Code");
        //while (enumerator.MoveNext())
        //{
        //    Box b = (Box)enumerator.Current;
        //    Console.WriteLine("{0}\t{1}\t{2}\t{3}",
        //    b.Height.ToString(), b.Length.ToString(), 
        //    b.Width.ToString(), b.GetHashCode().ToString());
        //}

        Console.WriteLine();
    }

}

public class Box : IEquatable<Box>
{

    public Box(int h, int l, int w)
    {
        this.Height = h;
        this.Length = l;
        this.Width = w;
    }
    public int Height { get; set; }
    public int Length { get; set; }
    public int Width { get; set; }

    // Defines equality using the
    // BoxSameDimensions equality comparer.
    public bool Equals(Box other)
    {
        if (new BoxSameDimensions().Equals(this, other))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public override bool Equals(object obj)
    {
        return base.Equals(obj);
    }

    public override int GetHashCode()
    {
        return base.GetHashCode();
    }
}

public class BoxCollection : ICollection<Box>
{

    // The generic enumerator obtained from IEnumerator<Box>
    // by GetEnumerator can also be used with the non-generic IEnumerator.
    // To avoid a naming conflict, the non-generic IEnumerable method
    // is explicitly implemented.

    public IEnumerator<Box> GetEnumerator()
    {
        return new BoxEnumerator(this);
    }
    IEnumerator IEnumerable.GetEnumerator()
    {
        return new BoxEnumerator(this);
    }

    // The inner collection to store objects.
    private List<Box> innerCol;

    // For IsReadOnly
    private bool isRO = false;

    public BoxCollection()
    {
        innerCol = new List<Box>();
    }

    // Adds an index to the collection.
    public Box this[int index]
    {
        get { return (Box)innerCol[index]; }
        set { innerCol[index] = value; }
    }

    // Determines if an item is in the collection
    // by using the BoxSameDimensions equality comparer.
    public bool Contains(Box item)
    {
        bool found = false;

        foreach (Box bx in innerCol)
        {
            // Equality defined by the Box
            // class's implmentation of IEquitable<T>.
            if (bx.Equals(item))
            {
                found = true;
            }
        }

        return found;
    }

    // Determines if an item is in the 
    // collection by using a specified equality comparer.
    public bool Contains(Box item, EqualityComparer<Box> comp)
    {
        bool found = false;

        foreach (Box bx in innerCol)
        {
            if (comp.Equals(bx, item))
            {
                found = true;
            }
        }

        return found;
    }

    // Adds an item if it is not already in the collection
    // as determined by calling the Contains method.
    public void Add(Box item)
    {

        if (!Contains(item))
        {
            innerCol.Add(item);
        }
        else
        {
            Console.WriteLine("A box with {0}x{1}x{2} dimensions was already added to the collection.",
                item.Height.ToString(), item.Length.ToString(), item.Width.ToString());
        }
    }

    public void Clear()
    {
        innerCol.Clear();
    }

    public void CopyTo(Box[] array, int arrayIndex)
    {
        for (int i = 0; i < innerCol.Count; i++)
        {

            array[i] = (Box)innerCol[i];
        }
    }

    public int Count
    {
        get
        {
            return innerCol.Count;
        }
    }

    public bool IsReadOnly
    {
        get { return isRO; }
    }

    public bool Remove(Box item)
    {
        bool result = false;

        // Iterate the inner collection to 
        // find the box to be removed.
        for (int i = 0; i < innerCol.Count; i++)
        {

            Box curBox = (Box)innerCol[i];

            if (new BoxSameDimensions().Equals(curBox, item))
            {
                innerCol.RemoveAt(i);
                result = true;
                break;
            }
        }
        return result;
    }
}


// Defines the enumerator for the Boxes collection.
// (Some prefer this class nested in the collection class.)
public class BoxEnumerator : IEnumerator<Box>
{
    private BoxCollection _collection;
    private int curIndex;
    private Box curBox;


    public BoxEnumerator(BoxCollection collection)
    {
        _collection = collection;
        curIndex = -1;
        curBox = default(Box);

    }

    public bool MoveNext()
    {
        //Avoids going beyond the end of the collection.
        if (++curIndex >= _collection.Count)
        {
            return false;
        }
        else
        {
            // Set current box to next item in collection.
            curBox = _collection[curIndex];
        }
        return true;
    }

    public void Reset() { curIndex = -1; }

    void IDisposable.Dispose() { }

    public Box Current
    {
        get { return curBox; }
    }


    object IEnumerator.Current
    {
        get { return Current; }
    }

}

// Defines two boxes as equal if they have the same dimensions.
public class BoxSameDimensions : EqualityComparer<Box>
{

    public override bool Equals(Box b1, Box b2)
    {
        if (b1.Height == b2.Height && b1.Length == b2.Length
                            && b1.Width == b2.Width)
        {
            return true;
        }
        else
        {
            return false;
        }
    }


    public override int GetHashCode(Box bx)
    {
        int hCode = bx.Height ^ bx.Length ^ bx.Width;
        return hCode.GetHashCode();
    }

}

// Defines two boxes as equal if they have the same volume.
public class BoxSameVol : EqualityComparer<Box>
{

    public override bool Equals(Box b1, Box b2)
    {
        if ((b1.Height * b1.Length * b1.Width) ==
                (b2.Height * b2.Length * b2.Width))
        {
            return true;
        }
        else
        {
            return false;
        }
    }


    public override int GetHashCode(Box bx)
    {
        int hCode = bx.Height ^ bx.Length ^ bx.Width;
        Console.WriteLine("HC: {0}", hCode.GetHashCode());
        return hCode.GetHashCode();
    }
}


/* 
This code example displays the following output:
================================================

A box with 10x4x6 dimensions was already added to the collection.

Height  Length  Width   Hash Code
10      4       6       46104728
4       6       10      12289376
6       10      4       43495525
12      8       10      55915408

Removing 6x10x4

Height  Length  Width   Hash Code
10      4       6       46104728
4       6       10      12289376
12      8       10      55915408

Contains 8x12x10 by dimensions: False
Contains 8x12x10 by volume: True 
 */



.NET Framework

Compatible con: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Compatible con:

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Mostrar: