What is the difference between these two classes ?
I have used System.StringComparer.OrdinalIgnoreCase() and System.StringComparison.OrdinalIgnore
The question is: why to have in a framework both of them ?
The explanation is this one:
Specifies the culture, case, and sort rules to be used by certain overloads of the String.Compare and String.Equals methods
Represents a string comparison operation that uses specific case and culture-based or ordinal comparison rules
Noticed a difference ?
In second case, so in case of StringComparer there is a notion of string comparison operation, but not string type.
In fact, if you look at this you will read simply:
Some non-string methods that have string comparison as a central operation use the StringComparer type.
An example, from the same link:
Array.BinarySearch(this.storedNames, name, StringComparer.Ordinal)
I use StringComparer like a comparison "base" among content of the array reference type.