假设我们有一个Foo具有Int32字段的类,Bar并且您想Foo按值对对象的集合进行排序Bar。一种方法是实现IComparable'sCompareTo()方法,但也可以像这样使用语言集成查询(LINQ)来完成
List<Foo> foos = new List<Foo>();
// assign some values here
var sortedFoos = foos.OrderBy(f => f.Bar);
现在sortedFoos我们有foos已排序的集合。但是如果你使用System.Diagnostics.StopWatchobject 来衡量对集合进行排序所花费的时间OrderBy()总是 0 毫秒。但是每当你打印sortedFoos集合时,它显然是排序的。这怎么可能。文学没有时间对集合进行排序,但是在方法执行之后集合被排序?有人可以向我解释这是如何工作的吗?还有一件事。假设在对foos集合进行排序后,我向它添加了另一个元素。现在每当我打印出集合时,我添加的元素最终应该是对的吗?错误的 !集合将foos被排序,我添加的元素是集合的一部分,foos即使我将该元素添加到foos排序后。我不明白这些是如何工作的,所以任何人都可以为我说清楚吗?!