Comparer<T>.IComparer.Compare(Object, Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сравнение двух объектов и возврат значения, указывающего, является ли один объект меньшим, равным или большим другого.
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
Параметры
- x
- Object
Первый из сравниваемых объектов.
- y
- Object
Второй из сравниваемых объектов.
Возвращаемое значение
Знаковое целое число, которое определяет относительные значения параметров x
и y
, как показано в следующей таблице.
Значение | Значение |
---|---|
Меньше нуля | Значение x меньше y .
|
Нуль | x равняется y .
|
Больше нуля | Значение x больше значения y .
|
Реализации
Исключения
Параметр x
или y
имеет тип, который не может быть приведен к типу T
.
-или-
x
и y
не реализуют универсальный интерфейс IComparable<T> или интерфейс IComparable.
Примеры
В следующем примере показано, как использовать IComparer.Compare метод для сравнения двух объектов. Этот пример является частью более крупного примера, предоставленного Comparer<T> для класса .
// 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())
Комментарии
Этот метод является оболочкой для Compare(T, T) метода, поэтому obj
должен быть приведен к типу, заданному универсальным аргументом T
текущего экземпляра. Если его нельзя привести к T
, ArgumentException создается исключение .
null
Сравнение с любым ссылочным типом разрешено и не создает исключение. При сортировке считается меньше, null
чем любой другой объект.
Примечания для тех, кто вызывает этот метод
Compare(T, T) и Equals(T, T) ведут себя по-разному с точки зрения учета языка и региональных параметров и учета регистра.
Для сравнения строк рекомендуется использовать StringComparer класс .Comparer<String>
StringComparer Свойства класса возвращают предопределенные экземпляры, которые выполняют сравнение строк с различными сочетаниями с учетом языка и региональных параметров и учета регистра. Чувствительность к регистру и языку и региональным параметрам согласованы между членами одного экземпляра StringComparer .
Дополнительные сведения о сравнениях с учетом языка и региональных параметров см. в System.Globalization разделе Пространство имен и Глобализация и локализация.