Note

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

Access to this page requires authorization. You can try .

IComparer Interface

Definition

Namespace:
System.Collections
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:
SecurityRulesAttribute.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.

Exposes a method that compares two objects.

public interface class IComparer
public interface IComparer
[System.Runtime.InteropServices.ComVisible(true)]
public interface IComparer
type IComparer = interface
[<System.Runtime.InteropServices.ComVisible(true)>]
type IComparer = interface
Public Interface IComparer
Derived
Attributes

Examples

The following example uses the IComparer interface to sort a string array. In this example, the Compare method is implemented using the CaseInsensitiveComparer class to reverse the order of the contents of the array.

using System;
using System.Collections;

public class Example
{
 public class ReverserClass : IComparer
 {
 // Call CaseInsensitiveComparer.Compare with the parameters reversed.
 int IComparer.Compare(Object x, Object y)
 {
 return ((new CaseInsensitiveComparer()).Compare(y, x));
 }
 }

 public static void Main()
 {
 // Initialize a string array.
 string[] words = { "The", "quick", "brown", "fox", "jumps", "over",
 "the", "lazy", "dog" };

 // Display the array values.
 Console.WriteLine("The array initially contains the following values:" );
 PrintIndexAndValues(words);

 // Sort the array values using the default comparer.
 Array.Sort(words);
 Console.WriteLine("After sorting with the default comparer:" );
 PrintIndexAndValues(words);

 // Sort the array values using the reverse case-insensitive comparer.
 Array.Sort(words, new ReverserClass());
 Console.WriteLine("After sorting with the reverse case-insensitive comparer:");
 PrintIndexAndValues(words);
 }

 public static void PrintIndexAndValues(IEnumerable list)
 {
 int i = 0;
 foreach (var item in list )
 Console.WriteLine($" [{i++}]: {item}");

 Console.WriteLine();
 }
}
// The example displays the following output:
// The array initially contains the following values:
// [0]: The
// [1]: quick
// [2]: brown
// [3]: fox
// [4]: jumps
// [5]: over
// [6]: the
// [7]: lazy
// [8]: dog
//
// After sorting with the default comparer:
// [0]: brown
// [1]: dog
// [2]: fox
// [3]: jumps
// [4]: lazy
// [5]: over
// [6]: quick
// [7]: the
// [8]: The
//
// After sorting with the reverse case-insensitive comparer:
// [0]: the
// [1]: The
// [2]: quick
// [3]: over
// [4]: lazy
// [5]: jumps
// [6]: fox
// [7]: dog
// [8]: brown
Imports System.Collections

Public Class Example
 Public Class ReverserClass : Implements IComparer
 ' Call CaseInsensitiveComparer.Compare with the parameters reversed.
 Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
 Implements IComparer.Compare
 Return New CaseInsensitiveComparer().Compare(y, x)
 End Function 
 End Class

 Public Shared Sub Main()
 ' Initialize a string array.
 Dim words() As String = { "The", "quick", "brown", "fox", "jumps", "over",
 "the", "lazy", "dog" }

 ' Display the array values.
 Console.WriteLine("The array initially contains the following values:")
 PrintIndexAndValues(words)

 ' Sort the array values of the ArrayList using the default comparer.
 Array.Sort(words)
 Console.WriteLine("After sorting with the default comparer:")
 PrintIndexAndValues(words)

 ' Sort the array values using the reverse case-insensitive comparer.
 Array.Sort(words, new ReverserClass())
 Console.WriteLine("After sorting with the reverse case-insensitive comparer:")
 PrintIndexAndValues(words)
 End Sub 

 Public Shared Sub PrintIndexAndValues(list As IEnumerable)
 Dim i As Integer = 0
 For Each item In list
 Console.WriteLine($" [{i}]: {item}")
 i += 1
 Next
 Console.WriteLine()
 End Sub 
End Class
' The example displays the following output:
' The array initially contains the following values:
' [0]: The
' [1]: quick
' [2]: brown
' [3]: fox
' [4]: jumps
' [5]: over
' [6]: the
' [7]: lazy
' [8]: dog
' 
' After sorting with the default comparer:
' [0]: brown
' [1]: dog
' [2]: fox
' [3]: jumps
' [4]: lazy
' [5]: over
' [6]: quick
' [7]: the
' [8]: The
' 
' After sorting with the reverse case-insensitive comparer:
' [0]: the
' [1]: The
' [2]: quick
' [3]: over
' [4]: lazy
' [5]: jumps
' [6]: fox
' [7]: dog
' [8]: brown

Remarks

This interface is used in conjunction with the Array.Sort and Array.BinarySearch methods. It provides a way to customize the sort order of a collection. See the Compare method for notes on parameters and return value. Its generic equivalent is the System.Collections.Generic.IComparer<T> interface.

The default implementation of this interface is the Comparer class. For the generic version of this interface, see System.Collections.Generic.IComparer<T>.

Methods

Name Description
Compare(Object, Object)

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

Applies to

See also


Feedback

Was this page helpful?