【发布时间】:2014-03-28 06:18:22
【问题描述】:
考虑这段代码
var strings2 = new List<string>
{
"0", // Ascii code 48 (decimal)
"|" // Ascii code 125 (decimal)
};
var sorted = strings2.OrderBy(x => x).ToArray();
已排序包含"|", "0"。现在考虑这段代码(我所做的只是将"|" 更改为".")
var strings2 = new List<string>
{
"0", // Ascii code 48 (decimal)
"." // Ascii code 46 (decimal)
};
var sorted = strings2.OrderBy(x => x).ToArray();
现在排序包含".", "0"
在这两种情况下,"0" 都出现在最后,即使 125 > 48,这里发生了什么?
【问题讨论】:
-
ASCII 数字代码不一定等同于字符串中字符的排序顺序。许多不同的因素会影响排序顺序,尤其是执行程序的当前文化。
-
那么排序顺序是什么?
-
我不是专家,但您使用的是字符串(由双引号
"分隔)而不是字符(由单引号'分隔)。正如@Sam 提到的,这可能与它有关。