Comparer<T>.Compare(T, T) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
При переопределении в производном классе выполняет сравнение двух объектов одного типа и возвращает значение, указывающее, меньше ли один объект, равен или больше другого.
public:
abstract int Compare(T x, T y);
public abstract int Compare(T x, T y);
public abstract int Compare(T? x, T? y);
abstract member Compare : 'T * 'T -> int
Public MustOverride Function Compare (x As T, y As T) As Integer
Параметры
- x
- T
Первый объект для сравнения.
- y
- T
Второй объект для сравнения.
Возвращаемое значение
Целое число со знаком, указывающее относительные значения x и y, как показано в следующей таблице.
| Ценность | Смысл |
|---|---|
| Меньше нуля |
x меньше y.
|
| Нуля |
x равно y.
|
| Больше нуля |
x больше y.
|
Реализации
Исключения
Тип T не реализует универсальный IComparable<T> интерфейс или IComparable интерфейс.
Примеры
В следующем примере определяется средство сравнения Box объектов, которые можно использовать вместо сравнения по умолчанию. Этот пример является частью более крупного примера, предоставленного Comparer<T> для класса.
public class BoxLengthFirst : Comparer<Box>
{
// Compares by Length, Height, and Width.
public override int Compare(Box x, Box y)
{
if (x.Length.CompareTo(y.Length) != 0)
{
return x.Length.CompareTo(y.Length);
}
else if (x.Height.CompareTo(y.Height) != 0)
{
return x.Height.CompareTo(y.Height);
}
else if (x.Width.CompareTo(y.Width) != 0)
{
return x.Width.CompareTo(y.Width);
}
else
{
return 0;
}
}
}
type BoxLengthFirst() =
inherit Comparer<Box>()
// Compares by Length, Height, and Width.
override _.Compare(x: Box, y: Box) =
if x.Length.CompareTo y.Length <> 0 then
x.Length.CompareTo y.Length
elif x.Height.CompareTo y.Height <> 0 then
x.Height.CompareTo y.Height
elif x.Width.CompareTo y.Width <> 0 then
x.Width.CompareTo y.Width
else
0
Public Class BoxLengthFirst
Inherits Comparer(Of Box)
' Compares by Length, Height, and Width.
Public Overrides Function Compare(ByVal x As Box, ByVal y As Box) As Integer
If x.Length.CompareTo(y.Length) <> 0 Then
Return x.Length.CompareTo(y.Length)
ElseIf x.Height.CompareTo(y.Height) <> 0 Then
Return x.Height.CompareTo(y.Height)
ElseIf x.Width.CompareTo(y.Width) <> 0 Then
Return x.Width.CompareTo(y.Width)
Else
Return 0
End If
End Function
End Class
Комментарии
Реализуйте этот метод для предоставления настраиваемого сравнения порядка сортировки для типа T.
Примечания для тех, кто реализует этот метод
null Сравнение с любым ссылочным типом разрешено и не создает исключение. Ссылка null считается меньше, чем любая ссылка, которая не имеет значения NULL.
Дополнительные сведения о сравнениях, относящихся к языку и региональным параметрам, см. в System.Globalization разделе пространства имен и глобализации и локализации.