IComparer<T> Arabirim

Tanım

Bir türün iki nesneyi karşılaştırmak için uyguladığı bir yöntemi tanımlar.

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ıracak nesne türü.

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, türündeki IComparer<T>Box nesneleri boyutlarına göre karşılaştırmak için arabirimini uygular. Bu örnek, sınıfı için Comparer<T> sağlanan daha büyük bir örneğin bir parçasıdır.

// 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 ve List<T>.BinarySearch yöntemleriyle List<T>.Sort birlikte kullanılır. Bir koleksiyonun sıralama düzenini özelleştirmek için bir yol sağlar. Bu arabirimi uygulayan sınıflar ve SortedList<TKey,TValue> genel sınıflarını SortedDictionary<TKey,TValue> içerir.

Bu arabirimin varsayılan uygulaması sınıfıdır Comparer<T> . StringComparer sınıfı türü Stringiçin bu arabirimi uygular.

Bu arabirim sıralama karşılaştırmalarını destekler. Diğer bir deyişle, yöntem 0 döndürdüğünde Compare , iki nesnenin aynı sıralamayı yaptığı anlamına gelir. Tam eşitlik karşılaştırmalarının uygulanması genel arabirim tarafından IEqualityComparer<T> sağlanır.

sınıfı, yönteminin açık arabirim uygulamasını ve Default nesne için varsayılan karşılaştırıcıyı alan özelliği sağladığından arabirimini Comparer<T>IComparer.Compare uygulamak IComparer<T> yerine sınıfından türetilmesi Comparer<T> önerilir.

Yöntemler

Compare(T, T)

İki nesneyi karşılaştırır ve birinin diğerinden küçük, ona eşit veya ondan büyük olup olmadığını belirten bir değer döndürür.

Şunlara uygulanır

Ayrıca bkz.