执行switch
语句时如何比较字符串?线程/计算机的当前区域性是否会影响switch
评估?我养成了在比较字符串时总是指定比较器的习惯,所以确认这一点会很棒。
我怀疑这是StringComparer.Ordinal
,但我找不到任何关于此的文档。
线程/计算机的当前区域性是否影响交换机 评估?
不,它没有。
switch
,在被子下面使用Equals
。因此它是序数:
此方法执行序号(区分大小写和 不区分文化(比较。
我们怎么知道switch
使用Equals
?好吧,文档指出:
常量表达式的计算方法如下:
如果 expr 和常量是整型类型,则 C# 相等运算符 确定表达式是否返回 true(即是否 expr == 常量(。
否则,表达式的值由对 static Object.Equals(expr, constant( 方法。
后一个要点在这里适用。