What is the difference between these two classes ?
I have used System.StringComparer.OrdinalIgnoreCase()
and System.StringComparison.OrdinalIgnoreCase()
and both yield the same results. Do they have any difference or they both same ?
What is the difference between these two classes ?
I have used System.StringComparer.OrdinalIgnoreCase()
and System.StringComparison.OrdinalIgnoreCase()
and both yield the same results. Do they have any difference or they both same ?
StringComparer
is a Class
which implements comparison interfaces like IComparer
, IEqualityComparer
, IComparer<String>
, so that it can be used to compare two strings.
StringComparison
is simply an Enum
that you can pass in to certain methods to indicate which kind of comparison you want. In that case I suspect the underlying method would use a StringComparer
to do the actual comparison.
When to use each
String specific methods like String.Equals only accepts a StringComparison
value, so that's what you would use in this case.
You would use a StringComparer
for methods which take a comparer as a parameter, and are called in a context where strings will be compared. For example, if you had a List<String>
, and wanted to Sort that list in a case-insensitive way, you could do:
myList.Sort(StringComparer.OrdinalIgnoreCase);