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

Pet*_*r K 11 .net c# string comparison localization

不使用"=="来比较.NET中的本地化字符串的原因是什么?如果我使用它,比较如何执行CultureInfo?

Ale*_*lex 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
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 10

==对文化不敏感 - 这是一个简单的序数比较.因此,在文化上相同的两个字符串 - 甚至在其他规范化形式方面相同 - 可能并不相同==.它基本上将每个字符串视为一个char数组.


SLa*_*aks 10

重载String.operator ==将执行文化 - 不知道的序数比较 - 它使用高度优化的展开循环逐字节比较字符串.
它调用相同的内部函数String.Equals(a, b, StringComparison.Ordinal)