C#-字符串。与char'-'比较具有奇怪的行为

时间:2020-08-26 22:56:27

标签: c#

int i;
i = String.Compare("A-", "A0"); // i = -1 -> OK
i = String.Compare("A-A", "A0A"); // i = 1 -> WHY ? 

我不明白为什么在两个文本上都添加相同的字母'A'可以更改返回的值?

我知道String.CompareOrdinal在两种情况下都将返回正确的负值。我想知道为什么String.Compare没有。

1 个答案:

答案 0 :(得分:3)

简单地说,连字符被忽略。以下将产生相同的结果

var ads = new[] {"A", "A0", "AA", "A0A"};
Console.WriteLine(string.Join(",",ads.OrderBy(x => x)));

String.Compare Method

给来电者的记录

字符集包括可忽略的字符。的 Compare(String,String)方法在以下情况下不考虑此类字符 它执行文化敏感的比较。例如,如果 以下代码在.NET Framework 4或更高版本上运行, “动物”与“动物”的文化敏感性比较(使用软 连字号(或U + 00AD)表示两个字符串相等。

更多

要在字符串比较中识别可忽略字符,请调用 Compare(String,String,StringComparison)方法并提供值 比较类型参数为Ordinal或OrdinalIgnoreCase。

相关问题