如果我想要一个不区分大小写的字符串键字典,那么在这些约束条件下,我应该使用哪个版本的StringComparer:
我通常使用StringComparer.InvariantCultureIgnoreCase,但不确定这是否正确。下面是示例代码:
Dictionary< string, object> stuff = new Dictionary< string, object>(StringComparer.InvariantCultureIgnoreCase);发布于 2008-10-09 20:33:29
这篇MSDN文章涵盖了您可能想要深入了解的所有内容,包括土耳其-I问题。
我已经有一段时间没读过了,所以我要再读一遍。一小时后见!
发布于 2008-10-09 20:28:39
比较器有三种:
每个比较器都有一个case-sensitive和一个case-insensitive版本。
序数比较器使用字符的序数值。这是最快的比较器,它应该用于内部用途。
culture-aware比较器考虑特定于当前线程区域性的方面。它知道“土耳其i”、“西班牙语LL”等问题。它应该用于UI字符串。
区域性不变的比较器实际上是没有定义的,并且会产生不可预测的结果,因此根本不应该使用。
参考文献
发布于 2008-10-09 17:18:52
“不区分大小写”的概念是一个语言概念,因此没有一种文化就没有意义。
有关更多信息,请参见此博客。
也就是说,如果您只是在讨论使用拉丁字母的字符串,那么您可能就可以不使用InvariantCulture了。
不过,最好还是用StringComparer.CurrentCulture创建字典。例如,这将允许您的字典中的"ss“与德国文化中的”ss“匹配。
https://stackoverflow.com/questions/188241
复制相似问题