Tim*_*ith 19 .net string culture equality string-comparison
从他们的简短摘要描述中,它听起来像字符串比较规则StringComparison.Ordinal,StringComparison.InvariantCulture并且意味着它们如何对字符串进行排序.这就是全部吗?也就是说,这是否意味着我们可以在进行相等比较时使用字符串比较规则?
string.Equals(a, b, StringComparison....)
Run Code Online (Sandbox Code Playgroud)
还有额外的功劳:如果我们进行比较OrdinalIgnoreCase,它会对答案产生影响InvariantCultureIgnoreCase吗?怎么样?
请提供支持论据和/或参考.
Ven*_*kov 22
例如,它确实很重要 - 有一种叫做角色扩展的东西
var s1 = "Strasse";
var s2 = "Straße";
s1.Equals(s2, StringComparison.Ordinal); // false
s1.Equals(s2, StringComparison.InvariantCulture); // true
Run Code Online (Sandbox Code Playgroud)
随着InvariantCulture该ß字符被扩大到ss.
嗯,这当然很重要.当您使用"忽略大小写"相等比较时,您将在.NET框架中调用相当大量的代码,这些代码知道大小写规则在当前文化中的工作方式.对于像我这样的前邮票收藏家极客来说,其规则非常有趣,根据你的看法,有一些非常奇怪的规则.土耳其语I问题很有名,Unicode家伙必须为它们做出明确的例外.
它实际上不是代码btw,它是查找表.有趣的是因为它需要MSFT来维护C#编译器的/ linkres命令行选项.您无法在自己的项目中使用的编译选项.它只是让mscorlib能够找到.nlp文件,文化规则的转换表.存储在与mscorlib.dll相同的GAC子目录中,编译选项的效果.
但我离题了.按理说这StringComparison.OrdinalIgnoreCase比StringComparison.InvariantCultureIgnoreCase快一点.仅仅因为'不变'意味着美国,MSFT的故乡.难以测量,这是在纳秒时钟.StringComparison.CurrentCultureIgnoreCase命中那些转换表.第一次使用时会变慢,稍后再使用时会慢一些.
| 归档时间: |
|
| 查看次数: |
6187 次 |
| 最近记录: |