switch 语句使用哪个字符串比较器?

Dav*_* S. 6 c# string cultureinfo string-comparison switch-statement

执行语句时如何比较字符串switch?线程/计算机的当前文化是否会影响switch评估?我养成了在比较字符串时总是指定比较器的习惯,因此如果能够确认这一点那就太好了。

我怀疑是这样StringComparer.Ordinal,但我找不到任何相关文档。

mjw*_*lls 6

线程/计算机的当前文化是否会影响交换机评估?

不,不是的。

switchEquals在幕后使用。因此它是序数的:

此方法执行序数(区分大小写且不区分区域性)比较。

我们如何知道switch用途Equals?那么文档指出:

常量表达式的计算如下:

  • 如果 expr 和constant 是整型,则 C# 相等运算符确定表达式是否返回 true(即 expr ==constant)。

  • 否则,表达式的值由调用静态 Object.Equals(expr,constant) 方法确定。

后一个要点适用于此。