gpt4 book ai didi

c# - list clear 是否删除之前包含的对象

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:01 24 4
gpt4 key购买 nike

想象我有:

List<MyObject> MyList = new List<MyObject>();
MyObject obj1 = new MyObject();
MyObject obj2 = new MyObject();
MyList.Add(obj1);
MyList.Add(obj2);

做一个

MyList.Clear();

删除实例化的:'obj1','obj2'?还是它们保存在内存中但列表现在是空的?

最佳答案

只要你有一个对象的引用并且你可以在你的代码中访问它,它就在内存中并且垃圾收集器不会收集它。所以答案是不,它们保存在内存中

您可以阅读有关垃圾收集的更多信息 here .

如果代码是这样

List<MyObject> MyList = new List<MyObject>();
MyList.Add(new MyObject());
MyList.Add(new MyObject());

然后当您调用 MyList.Clear() 时,您没有对您创建的 MyObject 的引用,因此垃圾收集器将收集它们并在下次运行时将它们从内存中删除.如果你想在清除列表后从内存中删除 obj1obj2 你应该使用

obj1 = null;
obj2 = null;
GC.Collect()

但要注意强制垃圾回收的后果。

关于c# - list clear 是否删除之前包含的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715364/

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