Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
389 views
in Technique[技术] by (71.8m points)

c# - Difference between the classes System.StringComparer and System.StringComparison?

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 ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...