Comparer<T>.IComparer.Compare(Object, Object) Метод

Определение

Сравнение двух объектов и возврат значения, указывающего, является ли один объект меньшим, равным или большим другого.Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

 virtual int System.Collections.IComparer.Compare(System::Object ^ x, System::Object ^ y) = System::Collections::IComparer::Compare;
int IComparer.Compare (object x, object y);
Function Compare (x As Object, y As Object) As Integer Implements IComparer.Compare

Параметры

x
Object

Первый из сравниваемых объектов.The first object to compare.

y
Object

Второй из сравниваемых объектов.The second object to compare.

Возвращаемое значение

Знаковое целое число, которое определяет относительные значения параметров x и y, как показано в следующей таблице.A signed integer that indicates the relative values of x and y, as shown in the following table.

ЗначениеValue ЗначениеMeaning
Меньше нуляLess than zero Значение x меньше y.x is less than y.
НульZero x равняется y.x equals y.
Больше нуляGreater than zero Значение x больше значения y.x is greater than y.

Реализации

Исключения

Параметр x или y имеет тип, который не может быть приведен к типу T.x or y is of a type that cannot be cast to type T.

-или--or- x и y не реализуют универсальный интерфейс IComparable<T> или интерфейс IComparable.x and y do not implement either the IComparable<T> generic interface or the IComparable interface.

Примеры

В следующем примере показано, как использовать метод IComparer.Compare для сравнения двух объектов.The following example shows how to use the IComparer.Compare method to compare two objects. Этот пример является частью большого примера, приведенного для класса Comparer<T>.This example is part of a larger example provided for the Comparer<T> class.


// 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 текущего экземпляра.This method is a wrapper for the Compare(T, T) method, so obj must be cast to the type specified by the generic argument T of the current instance. Если не удается выполнить приведение к T, выдается ArgumentException.If it cannot be cast to T, an ArgumentException is thrown.

Допускается сравнение null с любым ссылочным типом и не приводит к созданию исключения.Comparing null with any reference type is allowed and does not generate an exception. При сортировке null считается меньше, чем любой другой объект.When sorting, null is considered to be less than any other object.

Примечания для тех, кто вызывает этот метод

Compare(T, T) и System.Collections.Generic.EqualityComparer`1.Equals(\`0,\`0) ведут себя по-разному в отношении учета языка и региональных параметров и чувствительности к регистру. Compare(T, T) and System.Collections.Generic.EqualityComparer`1.Equals(\`0,\`0) behave differently in terms of culture-sensitivity and case-sensitivity. Для сравнения строк рекомендуется использовать класс StringComparer в сравнении с <string>.For string comparisons, the StringComparer class is recommended over Comparer<String>. Свойства класса StringComparer возвращают предопределенные экземпляры, которые выполняют сравнения строк с различными комбинациями языка и региональных параметров и чувствительности к регистру.Properties of the StringComparer class return predefined instances that perform string comparisons with different combinations of culture-sensitivity and case-sensitivity. Чувствительность к регистру и язык и региональные параметры согласованы между членами одного и того же экземпляра StringComparer.The case-sensitivity and culture-sensitivity are consistent among the members of the same StringComparer instance. Дополнительные сведения о сравнении в зависимости от языка и региональных параметров см. в разделе System.Globalization пространство имен, [Глобализация и локализация](~/docs/standard/globalization-localization/index.md).For more information on culture-specific comparisons, see the System.Globalization namespace and [Globalization and Localization](~/docs/standard/globalization-localization/index.md).

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

Дополнительно