IComparer<T> Rozhraní

Definice

Definuje metodu, kterou typ implementuje pro porovnání dvou objektů.Defines a method that a type implements to compare two objects.

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é mají být porovnány.The type of objects to compare.

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 rozměrů.The following example implements the IComparer<T> interface to compare objects of type Box according to their dimensions. Tento příklad je součástí většího příkladu, který je k dispozici pro Comparer<T> třídu.This example is part of a larger example provided for the Comparer<T> class.

// 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 List<T>.Sort List<T>.BinarySearch metodami a.This interface is used with the List<T>.Sort and List<T>.BinarySearch methods. Poskytuje způsob, jak přizpůsobit pořadí řazení kolekce.It provides a way to customize the sort order of a collection. Třídy, které implementují toto rozhraní, zahrnují SortedDictionary<TKey,TValue> SortedList<TKey,TValue> Obecné třídy a.Classes that implement this interface include the SortedDictionary<TKey,TValue> and SortedList<TKey,TValue> generic classes.

Výchozí implementace tohoto rozhraní je Comparer<T> Třída.The default implementation of this interface is the Comparer<T> class. StringComparerTřída implementuje toto rozhraní pro typ String .The StringComparer class implements this interface for type String.

Toto rozhraní podporuje porovnávání řazení.This interface supports ordering comparisons. To znamená, že když Compare Metoda vrátí hodnotu 0, znamená to, že dva objekty seřadí stejný objekt.That is, when the Compare method returns 0, it means that two objects sort the same. Implementace přesných porovnání rovnosti je poskytována pomocí IEqualityComparer<T> obecného rozhraní.Implementation of exact equality comparisons is provided by the IEqualityComparer<T> generic interface.

Doporučujeme odvozovat z Comparer<T> třídy namísto implementace IComparer<T> rozhraní, protože Comparer<T> Třída poskytuje explicitní implementaci rozhraní IComparer.Compare metody a Default vlastnost, která získá výchozí porovnávací objekt.We recommend that you derive from the Comparer<T> class instead of implementing the IComparer<T> interface, because the Comparer<T> class provides an explicit interface implementation of the IComparer.Compare method and the Default property that gets the default comparer for the object.

Metody

Compare(T, T)

Porovná dva objekty a vrátí hodnotu, která označuje, zda je jeden menší než, rovno nebo větší než druhý.Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

Platí pro

Viz také