在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
答案 0 :(得分:2)
oldList = oldList.OrderBy(o=>o.SomeProperty).ToList();
将在内存中创建一个新列表,并为其分配引用oldList
。您将在内存中有两个列表,一个列表排序,一个未排序。未排序的列表将保留在内存中,直到没有其他剩余引用为止。届时,该列表可用于垃圾回收,并且最终将释放或回收内存。