假设我们有一个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.StopWatch
object 来衡量对集合进行排序所花费的时间OrderBy()
总是 0 毫秒。但是每当你打印sortedFoos
集合时,它显然是排序的。这怎么可能。文学没有时间对集合进行排序,但是在方法执行之后集合被排序?有人可以向我解释这是如何工作的吗?还有一件事。假设在对foos
集合进行排序后,我向它添加了另一个元素。现在每当我打印出集合时,我添加的元素最终应该是对的吗?错误的 !集合将foos
被排序,我添加的元素是集合的一部分,foos
即使我将该元素添加到foos
排序后。我不明白这些是如何工作的,所以任何人都可以为我说清楚吗?!