在。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)