C# StringComparison枚举的选项

C# StringComparison枚举的选项,c#,.net,string,.net-4.0,string-comparison,C#,.net,String,.net 4.0,String Comparison,我被这条路的选择弄糊涂了。我只想比较两个忽略大小写的字符串。有人能解释一下“当前文化”、“不变文化”和“顺序文化”是什么意思吗?大多数用例是否有一个共同的选项,如果有,在什么情况下需要其他选项 作为参考,StringComparison枚举的选项如下所示: 当前文化 当前培养诊断酶 不变文化 不变量文化识别酶 序数的 普通木糖酶 请参阅和。建议使用序数*方法 如果要比较两个字符串是否相等,则区域性设置不会有太大区别(尽管它会影响到,例如,土耳其语,其中有点i和未点i) 如果你对字符串列表进行排

我被这条路的选择弄糊涂了。我只想比较两个忽略大小写的字符串。有人能解释一下“当前文化”、“不变文化”和“顺序文化”是什么意思吗?大多数用例是否有一个共同的选项,如果有,在什么情况下需要其他选项

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

  • 当前文化
  • 当前培养诊断酶
  • 不变文化
  • 不变量文化识别酶
  • 序数的
  • 普通木糖酶

请参阅和。建议使用序数*方法

如果要比较两个字符串是否相等,则区域性设置不会有太大区别(尽管它会影响到,例如,土耳其语,其中有点i和未点i)

如果你对字符串列表进行排序,那么会有很大的不同;不同的文化往往按不同的顺序排列

CurrentCulture根据当前区域性(即当前区域设置)对字符串进行排序。因此,这取决于软件的运行位置

不变量文化基本上是美英设置。它是不变的,因为无论您的软件在哪里运行,它都是相同的


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

不变量vs序数在感谢您的解释中进行了解释。当我在测试是否相等时,我选择了
OrdinalIgnoreCase
。如果不提供StringComparison,默认值是什么?@DeanKuga默认值使用顺序比较:区分大小写的比较,并使用当前区域性。参见
https://docs.microsoft.com/en-us/dotnet/csharp/how-to/compare-strings