IComparer<T> Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Definisce un metodo implementato da un tipo per confrontare due oggetti.
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)
Parametri di tipo
- T
Tipo di oggetti da confrontare.
Questo parametro di tipo è controvariante, ovvero puoi usare il tipo specificato o qualsiasi tipo meno derivato. Per altre informazioni sulla covarianza e la controvarianza, vedi Covarianza e controvarianza nei generics.- Derivato
Esempio
Nell'esempio seguente viene implementata l'interfaccia IComparer<T> per confrontare gli oggetti di tipo Box
in base alle relative dimensioni. Questo esempio fa parte di un esempio più ampio fornito per la Comparer<T> classe .
// 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
Commenti
Questa interfaccia viene usata con i List<T>.Sort metodi e List<T>.BinarySearch . Consente di personalizzare l'ordinamento di una raccolta. Le classi che implementano questa interfaccia includono le SortedDictionary<TKey,TValue> classi generiche e SortedList<TKey,TValue> .
L'implementazione predefinita di questa interfaccia è la Comparer<T> classe . La StringComparer classe implementa questa interfaccia per il tipo String.
Questa interfaccia supporta i confronti di ordinamento. Ovvero, quando il Compare metodo restituisce 0, significa che due oggetti ordinano lo stesso. L'implementazione di confronti di uguaglianza esatti viene fornita dall'interfaccia IEqualityComparer<T> generica.
È consigliabile derivare dalla Comparer<T> classe anziché implementare l'interfaccia IComparer<T> , perché la Comparer<T> classe fornisce un'implementazione esplicita dell'interfaccia del IComparer.Compare metodo e la Default proprietà che ottiene l'operatore di confronto predefinito per l'oggetto.
Metodi
Compare(T, T) |
Confronta due oggetti e restituisce un valore indicante se uno è minore, uguale o maggiore dell'altro. |