我应该使用'=='进行.NET本地化字符串比较吗?

时间:2011-11-17 23:38:39

标签: c# .net string localization comparison

不使用“==”比较.NET中的本地化字符串的原因是什么?如果我使用它,比较如何执行CultureInfo?

3 个答案:

答案 0 :(得分:14)

如果将文化感知字符串与==进行比较,例如将“Strasse”与“Straße”进行比较,则返回false。

如果您需要针对UI内容的文化感知比较(Listview的排序),则将String.Compare与相关的CultureInfo一起使用。

CultureInfo ci = new CultureInfo("de-DE");
String.Compare("Strasse", "Straße", true, ci) // Returns zero

答案 1 :(得分:10)

==对文化不敏感 - 这是一个简单的序数比较。因此,在文化上相同的两个字符串 - 甚至在其他规范化形式方面相同 - 可以通过== 相等。它基本上将每个字符串视为char数组。

答案 2 :(得分:10)

重载的String.operator ==将执行不区分文化的序数比较 - 它使用heavily optimized unrolled loop逐字节比较字符串。
它调用与String.Equals(a, b, StringComparison.Ordinal)

相同的内部函数