Difference between the classes System.StringComparer and System.StringComparison?

后端 未结 2 820
情书的邮戳
情书的邮戳 2020-12-15 17:58

What is the difference between these two classes ?

I have used System.StringComparer.OrdinalIgnoreCase() and System.StringComparison.OrdinalIgnore

2条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-15 18:13

    StringComparer is a Class which implements comparison interfaces like IComparer, IEqualityComparer, IComparer, 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, and wanted to Sort that list in a case-insensitive way, you could do:

    myList.Sort(StringComparer.OrdinalIgnoreCase);
    

提交回复
热议问题