不使用“==”比较.NET中的本地化字符串的原因是什么?如果我使用它,比较如何执行CultureInfo?
答案 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)