首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用哪个版本的StringComparer

使用哪个版本的StringComparer
EN

Stack Overflow用户
提问于 2008-10-09 17:10:30
回答 7查看 8.5K关注 0票数 21

如果我想要一个不区分大小写的字符串键字典,那么在这些约束条件下,我应该使用哪个版本的StringComparer:

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

我通常使用StringComparer.InvariantCultureIgnoreCase,但不确定这是否正确。下面是示例代码:

代码语言:javascript
复制
Dictionary< string, object> stuff = new Dictionary< string, object>(StringComparer.InvariantCultureIgnoreCase);
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2008-10-09 20:33:29

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

我已经有一段时间没读过了,所以我要再读一遍。一小时后见!

票数 12
EN

Stack Overflow用户

发布于 2008-10-09 20:28:39

比较器有三种:

  • 文化意识
  • 文化不变量
  • 序数

每个比较器都有一个case-sensitive和一个case-insensitive版本。

序数比较器使用字符的序数值。这是最快的比较器,它应该用于内部用途。

culture-aware比较器考虑特定于当前线程区域性的方面。它知道“土耳其i”、“西班牙语LL”等问题。它应该用于UI字符串。

区域性不变的比较器实际上是没有定义的,并且会产生不可预测的结果,因此根本不应该使用。

参考文献

  1. MicrosoftStrings2.0中使用字符串的新建议
票数 32
EN

Stack Overflow用户

发布于 2008-10-09 17:18:52

“不区分大小写”的概念是一个语言概念,因此没有一种文化就没有意义。

有关更多信息,请参见此博客

也就是说,如果您只是在讨论使用拉丁字母的字符串,那么您可能就可以不使用InvariantCulture了。

不过,最好还是用StringComparer.CurrentCulture创建字典。例如,这将允许您的字典中的"ss“与德国文化中的”ss“匹配。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/188241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档