Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Interfaz IComparer<T>

 

Publicado: octubre de 2016

Define un método que un tipo implementa para comparar dos objetos.

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

public interface IComparer<in T>

Parámetros de tipo

inT

Tipo de objetos que se van a comparar.

NombreDescripción
System_CAPS_pubmethodCompare(T, T)

Compara dos objetos y devuelve un valor que indica si uno de ellos es menor, igual o mayor que el otro.

Esta interfaz se utiliza con el List<T>.Sort y List<T>.BinarySearch métodos. Proporciona una manera de personalizar el criterio de ordenación de una colección. Las clases que implementan esta interfaz se incluyen los SortedDictionary<TKey, TValue> y SortedList<TKey, TValue> clases genéricas.

La implementación predeterminada de esta interfaz es la Comparer<T> clase. La StringComparer clase implementa esta interfaz para el tipo String.

Esta interfaz admite comparaciones de ordenación. Es decir, cuando la Compare método devuelve 0, significa que dos objetos están ordenados de la misma. Implementación de comparaciones de igualdad exactas proporciona el IEqualityComparer<T> interfaz genérica.

Se recomienda derivar desde la Comparer<T> clase en lugar de implementar la IComparer<T> interfaz, porque la Comparer<T> clase proporciona una implementación explícita de la interfaz de la IComparer.Compare (método) y el Default propiedad que obtiene el comparador predeterminado para el objeto.

En el ejemplo siguiente se implementa el IComparer<T> interfaz para comparar objetos de tipo Box según sus dimensiones. Este ejemplo forma parte de un ejemplo mayor proporcionado para el Comparer<T> clase.

// This class is not demonstrated in the Main method
// and is provided only to show how to implement
// the interface. It is recommended to derive
// from Comparer<T> instead of implementing IComparer<T>.
public class BoxComp : IComparer<Box>
{
    // Compares by Height, Length, and Width.
    public int Compare(Box x, Box y)
    {
        if (x.Height.CompareTo(y.Height) != 0)
        {
            return x.Height.CompareTo(y.Height);
        }
        else if (x.Length.CompareTo(y.Length) != 0)
        {
            return x.Length.CompareTo(y.Length);
        }
        else if (x.Width.CompareTo(y.Width) != 0)
        {
            return x.Width.CompareTo(y.Width);
        }
        else
        {
            return 0;
        }
    }
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 2.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: