我是否需要清理不再使用的类的 List 属性

  • 本文关键字:List 属性 不再 是否 c# .net
  • 更新时间 :
  • 英文 :


查看以下代码:

class Class1
{
    private List<object> _listOfAnything;
    ~Class1() //is it worth it?
    {
        //set null to all items of the list
        if (_listOfAnything != null)
        {
            if (_listOfAnything.Count > 0)
            {
                for (int i = 0; i < _listOfAnything.Count; i++)
                {
                    _listOfAnything[i] = null;
                }
                //clear list
                _listOfAnything.Clear();
            }
            //set list to null
            _listOfAnything = null;
        }
    }
    public void DoSomething()
    {
        //create list and add items to it
        _listOfAnything = new List<object>();
        _listOfAnything.Add(new object());
        _listOfAnything.Add(new object());
        _listOfAnything.Add(new object());
        //do something
    }
}
class Class2
{
    private void DoSomething()
    {
        //instanciate Class1
        Class1 class1 = new Class1();
        //do something with Class1
        class1.DoSomething();
        //set null to Class1
        class1 = null; //do I need to set it no null?
    }
}

我真的需要将Class1设置为空并清除Class1._listOfAnything吗?

没有必要清除垃圾回收器将处理它的列表。

释放列表的最佳方式

这是一种

浪费,没有完成Garbage Collector做不到的事情。

但是,假设您需要在擦除Class1实例之前对每个项目进行一些操作,请考虑查看 IDisposable。 请记住,析构函数仅在 GC 处理实例时被调用。当实例失去范围时不会。

我认为不需要这样做,因为一旦超出范围,List对象就会被销毁,并且.Net编译器GC(垃圾收集器)会清除内存。

相关内容

  • 没有找到相关文章

最新更新