C# 类System.StringComparer和System.StringComparation之间的差异?
这两门课有什么不同C# 类System.StringComparer和System.StringComparation之间的差异?,c#,asp.net,C#,Asp.net,这两门课有什么不同 我使用了System.StringComparer.OrdinalIgnoreCase()和System.stringcomparation.OrdinalIgnoreCase(),两者都产生了相同的结果。它们有什么不同吗?或者它们都一样吗?StringComparer是一个类,它实现了比较接口,如IComparer,IEqualityComparer,IComparer,这样就可以用来比较两个字符串 StringComparison只是一个Enum,您可以将它传递给某些方法
我使用了
System.StringComparer.OrdinalIgnoreCase()
和System.stringcomparation.OrdinalIgnoreCase()
,两者都产生了相同的结果。它们有什么不同吗?或者它们都一样吗?StringComparer
是一个类
,它实现了比较接口,如IComparer
,IEqualityComparer
,IComparer
,这样就可以用来比较两个字符串
StringComparison
只是一个Enum
,您可以将它传递给某些方法,以指示您需要哪种比较。在这种情况下,我怀疑底层方法将使用StringComparer
进行实际比较
何时使用每个
特定于字符串的方法,如仅接受StringComparison
值,因此在本例中您将使用该值
对于将比较器作为参数并在比较字符串的上下文中调用的方法,可以使用StringComparer
。例如,如果您有一个列表
,并且希望以不区分大小写的方式删除该列表,则可以执行以下操作:
myList.Sort(StringComparer.OrdinalIgnoreCase);
问题是:为什么要在一个框架中同时使用这两种方法? 解释是这样的:
- 比较如下:
- StringComparer是:
StringComparer
的情况下,有字符串比较操作
的概念,但没有字符串
类型
事实上,如果你看一下,你会简单地读到:
一些以字符串比较为中心的非字符串方法
操作使用StringComparer类型
例如,来自同一链接:
Array.BinarySearch(this.storedNames, name, StringComparer.Ordinal)
我使用
StringComparer
来比较array
reference类型的内容。您能发布您的案例以及每个案例的预期结果吗。我想知道您是否正在比较==vs Equals的引用与值System.StringComparison.OrdinalIgnoreCase
是一个枚举值,而不是一个方法。因此,System.StringComparison.OrdinalIgnoreCase()
无法编译。我不知道你到底是什么意思,回答得很好。更清楚地说:您可能永远都不应该设计一个将StringComparison作为输入的方法或类-您应该将其作为StringComparier,因为这将允许您的代码的客户端在需要时传入他们自己的自定义比较器。比较器是可扩展的,而比较是不可扩展的。