下面列出的两种订购方式有什么区别吗?一个比另一个好吗?
List<int> nums = new List<int>{ 5, 7, 6, 15, 1, 3 };
var sort1 = nums.OrderByDescending(i => i);
var sort2 = nums.OrderBy(i => -i);
答案 0 :(得分:10)
如果列表包含int.MinValue
,则可能会在极端情况下产生不同的结果。
尝试
List<int> nums = new List<int> { int.MinValue, 5, 7, 6, 15, 1, 3 };
sort1
是15, 7, 6, 5, 3, 1, -2147483648
,但是
sort2
为-2147483648, 15, 7, 6, 5, 3, 1
。
原因是溢出:
int a = int.MinValue;
if (a == -a)
Console.WriteLine("a == -a");
打印a == -a
。