Sdílet prostřednictvím


IComparer<T> Rozhraní

Definice

Definuje metodu, kterou typ implementuje k porovnání dvou objektů.

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)

Parametry typu

T

Typ objektů, které se mají porovnat.

Tento parametr typu je kontravariantní. To znamená, že můžete použít buď zadaný typ, nebo libovolný typ, který je méně odvozený. Další informace o kovarianci a kontravarianci najdete v tématu popisujícím kovarianci a kontravarianci u parametrického polymorfismu.
Odvozené

Příklady

Následující příklad implementuje IComparer<T> rozhraní pro porovnání objektů typu Box podle jejich dimenzí. Tento příklad je součástí většího příkladu poskytnutého Comparer<T> pro třídu .

// 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

Poznámky

Toto rozhraní se používá s metodami List<T>.Sort a List<T>.BinarySearch . Poskytuje způsob, jak přizpůsobit pořadí řazení kolekce. Třídy, které implementují toto rozhraní, zahrnují SortedDictionary<TKey,TValue> obecné třídy a SortedList<TKey,TValue> .

Výchozí implementace tohoto rozhraní je Comparer<T> třída . Třída StringComparer implementuje toto rozhraní pro typ String.

Toto rozhraní podporuje porovnání řazení. To znamená, že když Compare metoda vrátí hodnotu 0, znamená to, že dva objekty jsou seřazeny stejně. Implementaci přesného porovnání rovnosti zajišťuje IEqualityComparer<T> obecné rozhraní.

Doporučujeme odvodit z Comparer<T> třídy místo implementace IComparer<T> rozhraní, protože Comparer<T> třída poskytuje explicitní implementaci IComparer.Compare rozhraní metody a Default vlastnosti, která získá výchozí porovnávací nástroj pro objekt.

Metody

Compare(T, T)

Porovná dva objekty a vrátí hodnotu označující, zda je jeden menší než, roven nebo větší než druhý.

Platí pro

Viz také