Поделиться через


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 разделе Пространство имен и Глобализация и локализация.

Применяется к

См. также раздел