IComparer<T> Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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. |