使用哪个版本的StringComparer

Ted*_*ott 20 .net c# string internationalization

如果我想要一个不区分大小写的字符串键入字典,我应该使用哪个版本的StringComparer给定这些约束:

  • 字典中的键来自C#代码或仅用英语语言环境编写的配置文件(美国或英国)
  • 该软件已国际化,将在不同的区域运行

我通常使用StringComparer.InvariantCultureIgnoreCase但不确定这是否是正确的情况.这是示例代码:

Dictionary< string, object> stuff = new Dictionary< string, object>(StringComparer.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

Mic*_*tov 31

有三种比较器:

  • 文化感知
  • 文化不变
  • 序数词

每个比较器都具有区分大小写不区分大小写的版本.

一个顺序比较器使用字符的序数值.这是最快的比较器,它应该用于内部目的.

一个文化感知的比较器认为是具体到当前线程的文化方面.它知道"土耳其语i","西班牙语LL"等问题.它应该用于UI字符串.

文化不变的比较器实际上是没有定义,会产生不可预知的结果,因此,不应该在所有使用.

参考

  1. 在Microsoft .NET 2.0中使用字符串的新建议


Gre*_*ech 12

这篇MSDN文章涵盖了您可能想要深入了解的所有内容,包括土耳其语问题.

我读了它已经有一段时间了,所以我再次这样做了.一小时见!