不使用额外内存的对象的C#顺序列表

时间:2018-09-20 11:40:51

标签: c# list sorting

在C#列表排序上,我发现了有关堆栈溢出的旧争论: How to Sort a List<T> by a property in the object

我本人过去经常订购与以上链接中投票最多的回复相同的列表:

List<Order> newList = oldList.OrderBy(o=>o.SomeProperty).ToList();

不认为这会在内存中创建一个全新的列表。因此,以上链接中投票次数第二多的答复提供了最佳解决方案(。比较排序)。

我的问题是,如果更改第一个解决方案将避免内存重复:

oldList = oldList.OrderBy(o=>o.SomeProperty).ToList();

还是会在内存中再次创建一个新列表?

注意:我已经测试过,并且排序可以这种方式进行,但是我不知道如何检查(额外/​​新)内存使用情况。

谢谢 M

1 个答案:

答案 0 :(得分:2)

oldList = oldList.OrderBy(o=>o.SomeProperty).ToList();

将在内存中创建一个新列表,并为其分配引用oldList。您将在内存中有两个列表,一个列表排序,一个未排序。未排序的列表将保留在内存中,直到没有其他剩余引用为止。届时,该列表可用于垃圾回收,并且最终将释放或回收内存。