给出一个清单:
List<myType> myList = new List<myType>();
在运行时修改集合内容....
要清除列表,我似乎有建议使用
的示例myList = new List<myType>();
而不是
myList.Clear();
我可以想出一些原因,为什么我更喜欢一个而不是另一个,但是对于一种方法何时优于另一种方法,还有其他任何好的基准或指导方针吗?
答案 0 :(得分:3)
如果列表很大(80千字节或更多),那么它将存储在large object heap上。 LOH的官方指南是尽可能重复使用对象,以减少堆碎。 LOH不像常规堆那样被压缩。
对于较小的列表,我发现创建一个新列表通常比调用Clear
更快。这不是总是是真的,所以你可能最好在你的应用程序中以两种方式测试它。
如果您致电Clear
,它只会将列表中的所有项目设置为默认值,并将Count
设置为0.它不会更改列表的容量。因此调用Clear
不会改变分配给集合的内存量。如果您要清除列表并缩小其大小,请致电Clear
,然后TrimExcess
。
如果你不小心,你会遇到的一个问题是别名。如果您有多个引用同一列表的对象,则创建新列表不会删除其他引用。那么你最终得到两个列表。只是想一想。
总而言之,我认为没有特别的“最佳实践”。我发现有时使用Clear
会很好,有时最好分配一个新列表。
答案 1 :(得分:2)
当您绑定到列表对象并从其他代码区域引用它时 - 然后使用clear方法。如果您没有引用但未绑定,则创建新对象将是合适的。