通常,如果字符 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 按预期工作。
这是默认字符串比较器中的错误吗?