Compartir vía


IComparer<T> Interfaz

Definición

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

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.

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 IComparer<T> interfaz para comparar objetos de tipo Box según sus dimensiones. Este ejemplo forma parte de un ejemplo más grande proporcionado para la 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;
        }
    }
}
' 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 usa con los List<T>.Sort métodos y List<T>.BinarySearch . Proporciona una manera de personalizar el criterio de ordenación de una colección. Las clases que implementan esta interfaz incluyen las SortedDictionary<TKey,TValue> clases genéricas y SortedList<TKey,TValue> .

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 el Compare método devuelve 0, significa que dos objetos ordenan lo mismo. La interfaz genérica proporciona la IEqualityComparer<T> implementación de comparaciones de igualdad exactas.

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

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.

Se aplica a

Consulte también