Export (0) Print
Expand All

IStructuralComparable::CompareTo Method

Determines whether the current collection object precedes, occurs in the same position as, or follows another object in the sort order.

Namespace:  System.Collections
Assembly:  mscorlib (in mscorlib.dll)

int CompareTo(
	Object^ other, 
	IComparer^ comparer


Type: System::Object

The object to compare with the current instance.

Type: System.Collections::IComparer

An object that compares members of the current collection object with the corresponding members of other.

Return Value

Type: System::Int32
An integer that indicates the relationship of the current collection object to other, as shown in the following table.

Return value



The current instance precedes other.


The current instance and other are equal.


The current instance follows other.


This instance and other are not the same type.

The CompareTo method supports custom structural comparison and sorting of array and tuple objects. The CompareTo method calls the comparer object's IComparer::Compare method to compare individual array elements or tuple components, starting with the first element or component. The individual calls to IComparer::Compare end and the CompareTo method returns a value when one of the following conditions becomes true:

The following example creates an array of Tuple<T1, T2, T3, T4, T5, T6> objects that contains population data for three U.S. cities from 1960 to 2000. The sextuple's first component is the city name. The remaining five components represent the population at ten-year intervals from 1960 to 2000.

The PopulationComparer class provides an IComparer implementation that allows the array of sextuples to be sorted by any one of its components. Two values are provided to the PopulationComparer class in its constructor: the position of the component that defines the sort order, and a Boolean value that indicates whether the tuple objects should be sorted in ascending or descending order.

The example then displays the elements in the array in unsorted order, sorts them by the third component (the population in 1970) and displays them, and then sorts them by the sixth component (the population in 2000) and displays them. Note that the example does not directly call the IStructuralComparable::CompareTo implementation. The method is called implicitly by the Sort(Array, IComparer) method for each tuple object in the array.

No code example is currently available or this language may not be supported.

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

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.

© 2014 Microsoft