IComparer<T> Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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. |