Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

IComparer<T>.Compare(T, T) Method

Definition

Namespace:
System.Collections.Generic
Assemblies:
mscorlib.dll, System.Runtime.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Runtime.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
IComparer.cs
Source:
IComparer.cs
Source:
TupleExtensions.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

public:
 int Compare(T x, T y);
public int Compare(T x, T y);
public int Compare(T? x, T? y);
abstract member Compare : 'T * 'T -> int
Public Function Compare (x As T, y As T) As Integer

Parameters

x
T

The first object to compare.

y
T

The second object to compare.

Returns

A signed integer that indicates the relative values of x and y, as shown in the following table.

Value Meaning
Less than zero x is less than y.
Zero x equals y.
Greater than zero x is greater than y.

Examples

The following example implements the IComparer<T> interface to compare objects of type Box according to their dimensions. This example is part of a larger example provided for the Comparer<T> class.

// This class is not demonstrated in the Main method
// and is provided only to show how to implement
// the interface. It is recommended to derive
// from Comparer<T> instead of implementing IComparer<T>.
public class BoxComp : IComparer<Box>
{
 // Compares by Height, Length, and Width.
 public int Compare(Box x, Box y)
 {
 if (x.Height.CompareTo(y.Height) != 0)
 {
 return x.Height.CompareTo(y.Height);
 }
 else if (x.Length.CompareTo(y.Length) != 0)
 {
 return x.Length.CompareTo(y.Length);
 }
 else if (x.Width.CompareTo(y.Width) != 0)
 {
 return x.Width.CompareTo(y.Width);
 }
 else
 {
 return 0;
 }
 }
}
' This class is not demonstrated in the Main method
' and is provided only to show how to implement
' the interface. It is recommended to derive
' from Comparer<T> instead of implementing IComparer<T>.
Public Class BoxComp
 Implements IComparer(Of Box)
 ' Compares by Height, Length, and Width.
 Public Function Compare(ByVal x As Box, ByVal y As Box) As Integer Implements _
 IComparer(Of Box).Compare
 If x.Height.CompareTo(y.Height) <> 0 Then
 Return x.Height.CompareTo(y.Height)
 ElseIf x.Length.CompareTo(y.Length) <> 0 Then
 Return x.Length.CompareTo(y.Length)
 ElseIf x.Width.CompareTo(y.Width) <> 0 Then
 Return x.Width.CompareTo(y.Width)
 Else
 Return 0
 End If
 End Function
End Class

Remarks

Implement this method to provide a customized sort order comparison for type T.

Comparing null with any reference type is allowed and does not generate an exception. A null reference is considered to be less than any reference that is not null.

Applies to

See also


Feedback

Was this page helpful?