代码之家  ›  专栏  ›  技术社区  ›  user2813889

从列表中删除对象后,我应该将其更改为Null吗?

  •  3
  • user2813889  · 技术社区  · 12 年前

    我有一节课 static List<T> 我持有所有物品的领域;每个对象表示一个正在运行的进程及其财产。

    进程完成其作业后,相关对象将从 List<T> ,然后更新我的UI。

    从列表中删除该对象后,我应该将该对象更改为 null 释放资源?

    4 回复  |  直到 12 年前
        1
  •  10
  •   Alan    12 年前

    一旦您从列表中删除该对象,该对象仍然存在,但如果没有对该对象进行引用,垃圾收集器将对其进行清理,您不必担心

        2
  •  8
  •   ford prefect    12 年前

    C#是垃圾收集的,所以无论哪种方式,内存都会得到处理。

        3
  •  5
  •   Community Mohan Dere    8 年前

    当您从列表中删除该对象时,该对象将超出范围,并且它将符合GC条件。。


    依据 事件 :

    即使该对象有一些其他对象订阅的事件,它对GC来说仍然是可接受的。。

    所以,这是一种单向关系

    Broadcaster -> Subscribers
    

    如果 Broadcaster 超出范围,即使它有订户,它也有资格获得GC。。

    但是 广播公司 将阻止的GC Subscribers

    看一看 Do event handlers stop garbage collection from occuring?

        4
  •  3
  •   Brian Vitaliy Nesterenko    12 年前

    简而言之,没有。

    一旦引用超出范围 Garbage Collector 将删除对象/对它的引用。这也可以用 using (如果对象实现 IDisposable )关键字。基本上,不要将其设置为 null 并让C#中的清理机制为您处理工作。