IComparer<T> Arabirim

Tanım

İki nesneyi karşılaştırmak için bir türün uyguladığı bir yöntemi tanımlar.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)

Tür Parametreleri

T

Karşılaştırılacak nesne türü.The type of objects to compare.

Bu genel tür parametresi kontravaryanttır. Bu, kendi belirttiğiniz türü veya daha az türetilmiş başka bir türü kullanabileceğiniz anlamına gelir. Kovaryans ve kontravaryans hakkında daha fazla bilgi için bkz. Genel Türlerde Kovaryans ve Kontravaryans.
Türetilmiş

Örnekler

Aşağıdaki örnek, IComparer<T> türündeki nesneleri boyutlarına göre karşılaştırmak için arabirimini uygular Box .The following example implements the IComparer<T> interface to compare objects of type Box according to their dimensions. Bu örnek, sınıfı için sağlanmış daha büyük bir örneğin bir parçasıdır Comparer<T> .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

Açıklamalar

Bu arabirim List<T>.Sort ve List<T>.BinarySearch yöntemleriyle kullanılır.This interface is used with the List<T>.Sort and List<T>.BinarySearch methods. Bir koleksiyonun sıralama düzenini özelleştirmek için bir yol sağlar.It provides a way to customize the sort order of a collection. Bu arabirimi uygulayan sınıflar SortedDictionary<TKey,TValue> ve SortedList<TKey,TValue> Genel sınıfları içerir.Classes that implement this interface include the SortedDictionary<TKey,TValue> and SortedList<TKey,TValue> generic classes.

Bu arabirimin varsayılan uygulama Comparer<T> sınıfı olur.The default implementation of this interface is the Comparer<T> class. StringComparerSınıfı bu arabirimi türü için uygular String .The StringComparer class implements this interface for type String.

Bu arabirim, karşılaştırmaları sıralamayı destekler.This interface supports ordering comparisons. Diğer bir deyişle, Compare Yöntem 0 döndürdüğünde, iki nesnenin aynı sıralaması anlamına gelir.That is, when the Compare method returns 0, it means that two objects sort the same. Tam eşitlik karşılaştırmalarının uygulanması genel arabirim tarafından sağlanır IEqualityComparer<T> .Implementation of exact equality comparisons is provided by the IEqualityComparer<T> generic interface.

Comparer<T> IComparer<T> Comparer<T> Sınıfı, yönteminin açık bir arabirim uygulaması IComparer.Compare ve Default nesne için varsayılan karşılaştırıcıyı alan özelliği sağladığından, arabirimini uygulamak yerine sınıfından türetmenizi öneririz.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.

Yöntemler

Compare(T, T)

İki nesneyi karşılaştırır ve birinin diğerinin sayısından küçük, eşit veya ondan büyük olup olmadığını gösteren bir değer döndürür.Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

Şunlara uygulanır

Ayrıca bkz.