IComparer<T> Interfaz

Definición

Define un método que un tipo implementa para comparar dos objetos.Defines a method that a type implements to compare two objects.

generic <typename T>
public interface class IComparer
public interface IComparer<in T>
public interface IComparer<T>
type IComparer<'T> = interface
Public Interface IComparer(Of In T)
Public Interface IComparer(Of T)

Parámetros de tipo

T

Tipo de objetos que se van a comparar.The type of objects to compare.

Este parámetro de tipo es contravariante, es decir, puede usar el tipo que haya especificado o cualquier tipo menos derivado. Si desea obtener más información sobre la covarianza y la contravarianza, consulte Covarianza y contravarianza en genéricos.
Derivado

Ejemplos

En el ejemplo siguiente se implementa la interfaz IComparer<T> para comparar objetos de tipo Box según sus dimensiones.The following example implements the IComparer<T> interface to compare objects of type Box according to their dimensions. Este ejemplo forma parte de un ejemplo más extenso proporcionado para la clase Comparer<T>.This example is part of a larger example provided for the Comparer<T> class.

// 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;
        }
    }
}
' 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
    Implements IComparer(Of Box)
    ' Compares by Height, Length, and Width.
    Public Function Compare(ByVal x As Box, ByVal y As Box) As Integer Implements _
                                                IComparer(Of Box).Compare
        If x.Height.CompareTo(y.Height) <> 0 Then
            Return x.Height.CompareTo(y.Height)
        ElseIf x.Length.CompareTo(y.Length) <> 0 Then
            Return x.Length.CompareTo(y.Length)
        ElseIf x.Width.CompareTo(y.Width) <> 0 Then
            Return x.Width.CompareTo(y.Width)
        Else
            Return 0
        End If
    End Function
End Class

Comentarios

Esta interfaz se utiliza con los métodos List<T>.Sort y List<T>.BinarySearch.This interface is used with the List<T>.Sort and List<T>.BinarySearch methods. Proporciona una manera de personalizar el criterio de ordenación de una colección.It provides a way to customize the sort order of a collection. Entre las clases que implementan esta interfaz se incluyen las clases genéricas SortedDictionary<TKey,TValue> y SortedList<TKey,TValue>.Classes that implement this interface include the SortedDictionary<TKey,TValue> and SortedList<TKey,TValue> generic classes.

La implementación predeterminada de esta interfaz es la clase Comparer<T>.The default implementation of this interface is the Comparer<T> class. La clase StringComparer implementa esta interfaz para el tipo String.The StringComparer class implements this interface for type String.

Esta interfaz admite comparaciones de ordenación.This interface supports ordering comparisons. Es decir, cuando el método Compare devuelve 0, significa que dos objetos ordenan el mismo.That is, when the Compare method returns 0, it means that two objects sort the same. La interfaz genérica IEqualityComparer<T> proporciona la implementación de comparaciones de igualdad exactas.Implementation of exact equality comparisons is provided by the IEqualityComparer<T> generic interface.

Se recomienda derivar de la clase Comparer<T> en lugar de implementar la interfaz IComparer<T>, porque la clase Comparer<T> proporciona una implementación de interfaz explícita del método IComparer.Compare y la propiedad Default que obtiene el comparador predeterminado para el objeto.We recommend that you derive from the Comparer<T> class instead of implementing the IComparer<T> interface, because the Comparer<T> class provides an explicit interface implementation of the IComparer.Compare method and the Default property that gets the default comparer for the object.

Métodos

Compare(T, T)

Compara dos objetos y devuelve un valor que indica si uno de ellos es menor, igual o mayor que el otro.Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

Se aplica a

Consulte también: