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