为什么不建议在.NET中使用" == "来比较本地化字符串?如果我使用它,相应的 CultureInfo 会如何执行比较?
为什么不建议在.NET中使用" == "来比较本地化字符串?如果我使用它,相应的 CultureInfo 会如何执行比较?
如果你用 == 比较带有区域性的字符串,例如将 "Strasse" 与 "Straße" 进行比较,则返回 false。
如果您需要在 UI 方面进行具有区域性的比较(例如对 Listview 进行排序),则使用 String.Compare 和相关的 CultureInfo。
CultureInfo ci = new CultureInfo("de-DE");
String.Compare("Strasse", "Straße", true, ci) // Returns zero
==
是不考虑文化差异的 - 它是一个简单的序数比较。因此,两个在文化上相等甚至在其他规范化形式上相等的字符串,可能通过==
不相等。它基本上把每个字符串看作一个char
数组。
重载的 String.operator ==
将执行一个与文化无关的序数比较 - 它使用一个高度优化的拆卸循环逐字节比较字符串。
它调用与 String.Equals(a, b, StringComparison.Ordinal)
相同的内部函数。
==
运算符吗?如果是的话,你应该添加 C# 标签。 - phoog