Export (0) Print
Expand All

Comparer<T>.IComparer.Compare Method

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

Namespace:  System.Collections.Generic
Assemblies:   System.Collections (in System.Collections.dll)
  mscorlib (in mscorlib.dll)

int IComparer.Compare(
	Object x,
	Object y
)

Parameters

x
Type: System.Object

The first object to compare.

y
Type: System.Object

The second object to compare.

Return Value

Type: System.Int32
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.

Implements

IComparer.Compare(Object, Object)

ExceptionCondition
ArgumentException

x or y is of a type that cannot be cast to type T.

-or-

x and y do not implement either the System.IComparable<T> generic interface or the System.IComparable interface.

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. If it cannot be cast to T, an ArgumentException is thrown.

Comparing null with any reference type is allowed and does not generate an exception. When sorting, null is considered to be less than any other object.

Notes to Callers

Compare and EqualityComparer<T>.Equals behave differently in terms of culture-sensitivity and case-sensitivity.

For string comparisons, the StringComparer class is recommended over Comparer<String>. Properties of the StringComparer class return predefined instances that perform string comparisons with different combinations of culture-sensitivity and case-sensitivity. The case-sensitivity and culture-sensitivity are consistent among the members of the same StringComparer instance.

For more information on culture-specific comparisons, see the System.Globalization namespace and Globalizing and Localizing .NET Framework Applications.

The following example shows how to use the IComparer.Compare method to compare two objects. 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());

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft