CaseInsensitiveComparer.Compare(Object, Object) Method


Performs a case-insensitive comparison of two objects of the same type and returns a value indicating whether one is less than, equal to, or greater than the other.

 virtual int Compare(System::Object ^ a, System::Object ^ b);
public int Compare (object a, object b);
public int Compare (object? a, object? b);
abstract member Compare : obj * obj -> int
override this.Compare : obj * obj -> int
Public Function Compare (a As Object, b As Object) As Integer



The first object to compare.


The second object to compare.


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

Value Meaning
Less than zero a is less than b, with casing ignored.
Zero a equals b, with casing ignored.
Greater than zero a is greater than b, with casing ignored.



Neither a nor b implements the IComparable interface.


a and b are of different types.


If a and b are both strings, this method uses CompareInfo.Compare to compare the strings with the casing ignored; otherwise, it uses the IComparable implementation of either object. That is, if a implements IComparable, then this method returns the result of a. CompareTo (b); otherwise, if b implements IComparable, then it returns the negated result of b. CompareTo (a).

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

String comparisons might have different results depending on the culture. For more information on culture-specific comparisons, see the System.Globalization namespace and Globalization and Localization.

Applies to

See also