Comparer<T>.IComparer.Compare(Object, Object) Yöntem
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.
İki nesneyi karşılaştırır ve birinin diğerinden küçük, buna eşit veya ondan büyük olduğunu belirten bir değer döndürür.
virtual int System.Collections.IComparer.Compare(System::Object ^ x, System::Object ^ y) = System::Collections::IComparer::Compare;
int IComparer.Compare (object x, object y);
abstract member System.Collections.IComparer.Compare : obj * obj -> int
override this.System.Collections.IComparer.Compare : obj * obj -> int
Function Compare (x As Object, y As Object) As Integer Implements IComparer.Compare
Parametreler
- x
- Object
Karşılaştırma yapılacak ilk nesne.
- y
- Object
Karşılaştırma yapılacak ikinci nesne.
Döndürülenler
Aşağıdaki tabloda gösterildiği gibi ve y
göreli değerlerini gösteren işaretli bir tamsayıx
.
Değer | Anlamı |
---|---|
Sıfırdan küçük | x değerinden küçüktür y .
|
Sıfır | x eşittir y .
|
Sıfırdan büyük | x değerinden büyüktür y .
|
Uygulamalar
Özel durumlar
x
veya y
türüne atanamayan bir türdür T
.
-veya-
x
ve y
genel arabirimini veya arabirimini uygulamayın IComparable<T>IComparable .
Örnekler
Aşağıdaki örnekte iki nesneyi karşılaştırmak için yönteminin IComparer.Compare nasıl kullanılacağı gösterilmektedir. Bu örnek, sınıfı için Comparer<T> sağlanan daha büyük bir örneğin parçasıdır.
// This explicit interface implementation
// compares first by the length.
// Returns -1 because the length of BoxA
// is less than the length of BoxB.
BoxLengthFirst LengthFirst = new BoxLengthFirst();
Comparer<Box> bc = (Comparer<Box>) LengthFirst;
Box BoxA = new Box(2, 6, 8);
Box BoxB = new Box(10, 12, 14);
int x = LengthFirst.Compare(BoxA, BoxB);
Console.WriteLine();
Console.WriteLine(x.ToString());
' This explicit interface implementation
' compares first by the length.
' Returns -1 because the length of BoxA
' is less than the length of BoxB.
Dim LengthFirst As New BoxLengthFirst()
Dim bc As Comparer(Of Box) = CType(LengthFirst, Comparer(Of Box))
Dim BoxA As New Box(2, 6, 8)
Dim BoxB As New Box(10, 12, 14)
Dim x As Integer = LengthFirst.Compare(BoxA, BoxB)
Console.WriteLine()
Console.WriteLine(x.ToString())
Açıklamalar
Bu yöntem yöntemi için Compare(T, T) bir sarmalayıcıdır, bu nedenle obj
geçerli örneğin genel bağımsız değişkeni T
tarafından belirtilen türe yayınlanmalıdır. 'a T
yayınlanamazsa, bir ArgumentException oluşturulur.
Herhangi bir başvuru türüyle karşılaştırmaya null
izin verilir ve özel durum oluşturmaz. Sıralama sırasında, null
diğer nesnelerden daha az olarak kabul edilir.
Arayanlara Notlar
Compare(T, T) ve Equals(T, T) kültüre duyarlılık ve büyük/küçük harf duyarlılığı bakımından farklı davranır.
Dize karşılaştırmaları için sınıfı StringComparer üzerinden Comparer<String>
önerilir. StringComparer sınıfının özellikleri, kültür duyarlılığı ve büyük/küçük harf duyarlılığının farklı bileşimleriyle dize karşılaştırmaları gerçekleştiren önceden tanımlanmış örnekler döndürür. Büyük/küçük harf duyarlılığı ve kültür duyarlılığı, aynı StringComparer örneğin üyeleri arasında tutarlıdır.
Kültüre özgü karşılaştırmalar hakkında daha fazla bilgi için bkz System.Globalization . ad alanı ve Genelleştirme ve Yerelleştirme.