我是否应该在.NET本地化字符串比较中使用'=='?

11

为什么不建议在.NET中使用" == "来比较本地化字符串?如果我使用它,相应的 CultureInfo 会如何执行比较?


你是在询问 C# 的 == 运算符吗?如果是的话,你应该添加 C# 标签。 - phoog
3个回答

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

10

== 是不考虑文化差异的 - 它是一个简单的序数比较。因此,两个在文化上相等甚至在其他规范化形式上相等的字符串,可能通过== 不相等。它基本上把每个字符串看作一个char数组。


10

重载的 String.operator == 将执行一个与文化无关的序数比较 - 它使用一个高度优化的拆卸循环逐字节比较字符串。
它调用与 String.Equals(a, b, StringComparison.Ordinal) 相同的内部函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接