在C#列表排序中,我发现了一个关于堆栈溢出的老争论: How to Sort a List<T> by a property in the object
我自己也曾在上面的链接中排序与投票最多的回复相同的列表:
List<Order> newList = oldList.OrderBy(o=>o.SomeProperty).ToList();
不要以为这会在内存中创建一个全新的列表。因此,上面链接中投票数第二高的回复本身就是最佳解决方案(.Sort with Comparison)。
我的问题是,如果更改第一个解决方案可以避免内存重复:
oldList = oldList.OrderBy(o=>o.SomeProperty).ToList();
或者这会再次在内存中创建一个新列表吗?
note:I tested 已经有了,而且排序是这样的,但是我不知道如何检查(额外的/新的)内存使用情况。
谢谢你
将在内存中创建一个新列表并分配引用 oldList 去吧。内存中有两个列表,一个已排序,一个未排序。未排序的列表将保留在内存中,直到没有其他剩余的引用为止。在这一点上,列表是可行的垃圾收集和内存最终将被释放或回收。
oldList