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

传递对IDisposable对象的引用的类是否也可以IDisposable,并在释放时将其设置为null?

  •  2
  • Trap  · 技术社区  · 15 年前

    我想这个问题说明了一切。

    谢谢。

    6 回复  |  直到 15 年前
        1
  •  13
  •   Jon Skeet    15 年前

    他们应该执行 IDisposable 如果对象 拥有 那个资源。一般来说,不需要设置为空,尽管这样做没有坏处。

    如果你 不要 拥有资源,那么很明显你不应该处理它,也不需要实现 不可分的 . 以我的经验,我很少有一个成员变量用于可支配资源,虽然我的类中没有这个变量…

        2
  •  3
  •   Henk Holterman    15 年前

    “持有参考”不是真正的标准。当一个对象逻辑上“拥有”一个idiposable对象时,那么是的,它应该实现idisposable来为所有拥有的可弃对象调用dispose。
    但它不应该实现析构函数(finalizer)。

        3
  •  1
  •   Dan Puzey    15 年前

    设置为空不是必需的,但是 应该 呼叫 .Dispose() 在父类的所有这些对象上 处理() .

    编辑: 如果且仅当您的类负责创建这些对象。

        4
  •  0
  •   Gerrie Schenck    15 年前

    这是一个很好的做法是的。当调用此类类的dispose时,最好也对所有引用对象调用dispose。

        5
  •  0
  •   Rob van Groenewoud    15 年前

    是的,如果引用属于类,那么fxcop/ms代码分析甚至应该 check 为了它。

        6
  •  0
  •   Morfildur    15 年前

    如果您的类创建了一次性对象,那么您的类负责清理它们。因为你的类不知道什么时候清理,除非有东西告诉它(我不计算析构函数),这是使你的类实现IDisposable的最简单的方法。

    如果您的类使用但不创建一次性对象,那么您应该将清理工作留给这些对象的创建者。