3

通常,如果字符 A 小于字符 B,那么我希望在字符串比较中:

AB < BA

事实上,在字典中,您可以在 BA 词之前找到 AB 词。

不知何故,这不是下划线的情况

小程序;使用复制粘贴检查

public static void Main()
{
    IComparer<string> comp = Comparer<string>.Default;
    Console.WriteLine("Compare '-' with '_': " + comp.Compare("-", "_").ToString());
    Console.WriteLine("Compare '--' with '-_': " + comp.Compare("--", "-_").ToString());
    Console.WriteLine("Compare '-_' with '_-': " + comp.Compare("-_", "_-").ToString());
}

输出是:

Compare '-' with '_': -1
Compare '--' with '-_': -1
Compare '-_' with '_-': 1

最后一个值返回 +1
所以:

"-"< "_"              // minus is less than underscore
"-_" > "_-"           // minus underscore MORE THAN underscore minus

使用默认字符串比较器时会发生此行为。StringComparer.Ordinal 按预期工作。

这是默认字符串比较器中的错误吗?

4

0 回答 0