Sdílet prostřednictvím


IComparer<T> Rozhraní

Definice

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

generic <typename T>
public interface class IComparer
public interface IComparer<in T>
public interface IComparer<in T> where T : allows ref struct
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é chcete 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 metodami. Poskytuje způsob, jak přizpůsobit pořadí řazení kolekce. Třídy, které implementují toto rozhraní, zahrnují SortedDictionary<TKey,TValue> a SortedList<TKey,TValue> obecné třídy.

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 seřadí stejné. Implementace přesných porovnání rovnosti je poskytována obecným rozhraním IEqualityComparer<T> .

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

Metody

Name Description
Compare(T, T)

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

Platí pro

Viz také