StringComparison枚举的选项

Dan*_*ens 37 .net c# string .net-4.0 string-comparison

我对StringComparison枚举的选项感到困惑.我只是想比较两个忽略大小写的字符串.有人可以解释当前文化,不变文化序数的含义吗?大多数用例是否有共同选项,如果有,在什么情况下需要其他选项?

作为参考,StringComparison枚举的选项如下:

  • 的CurrentCulture
  • CurrentCultureIgnoreCase
  • InvariantCulture的
  • InvariantCultureIgnoreCase
  • 序数词
  • OrdinalIgnoreCase

arx*_*arx 43

如果你要比较两个字符串是否相等,那么文化设置没有太大的区别(虽然它会影响,例如土耳其语,它已经点缀并且没有发布).

如果你正在排序一个字符串列表,那就有很大的不同; 不同的文化往往按不同的顺序排序.

CurrentCulture根据当前文化(即当前语言环境)对字符串进行排序.因此,这取决于您的软件运行位置.

InvariantCulture基本上是美国英语设置.它是不变的,因为无论你的软件运行在哪里都是一样的.

序数比较基于Unicode代码点的值.这通常是比较相等性的最佳选择,但如果要排序要显示给用户的字符串列表,这不是一个好的选择.

  • 感谢您的解释。在测试相等性时,我已经使用了OrdinalIgnoreCase。 (2认同)