gpt4 book ai didi

c# - 清除私有(private)收藏或将其设置为空?

转载 作者:太空狗 更新时间:2023-10-29 20:28:16 25 4
gpt4 key购买 nike

我有一个可变类,它有一个私有(private) List<T>场内。在Reset()我类(class)的方法,我应该使用它的 Clear() 清除列表吗?方法还是只是为其字段分配一个新列表?请注意,该列表不是公开的,仅供类本身使用。因此,分配一个新列表应该会使旧列表无法访问。自 Clear()方法 is an O(n) operation ,我想知道仅在其上分配一个新列表的缺点是什么。

最佳答案

我能想到的唯一缺点是,如果您需要再次使用该列表,则必须为其分配新的空间。

将其置空只会使列表及其内容(假设没有其他引用)符合 GC 的条件。清除它会删除项目但保留分配的内存。

就我个人而言,我倾向于将其置空,因为即使我再次需要它,大小也会完全改变。

更新:关于下面的评论,您声明这些对象将在对象池中进行管理。我建议创建一个小型分析控制台应用程序以获得最终答案。讨论现在逐步深入到您的实现细节和对象池的预期用途,这很容易改变答案。

一般来说,如果列表的长度变化不大并且总是需要,我会使用 Clear 来避免为列表分配新内存。如果列表长度容易发生很大变化,或者使用有时很少 - 我倾向于将其置空以回收内存并通过列表的惰性实例化获得一些小的好处。

关于c# - 清除私有(private)收藏或将其设置为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11717416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com