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



在。net中不使用"=="来比较本地化字符串的原因是什么?如果我确实使用CultureInfo,比较将如何执行?

如果使用==比较具有文化特征的字符串,例如"Strasse"与"Straße",则返回false。

如果您需要对UI内容(Listview的排序)进行文化感知比较,您可以使用String。与相关的文化信息进行比较。

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

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

重载的String.operator ==将执行不受文化影响的序号比较& &;它使用一个高度优化的展开循环逐个字节地比较字符串。
它调用与String.Equals(a, b, StringComparison.Ordinal)

相同的内部函数

最新更新