是否有一个用例不使用"这个"什么时候调用GC.SuppressFinalize(this)?

时间:2013-04-13 20:46:19

标签: c# design-patterns garbage-collection

我刚刚实现了Dispose模式,当我输入GC.SuppressFinalize(this)行时,我想知道是否有一个用例来使用this之外的其他东西作为方法的参数

这是典型的模式:

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);  // right here
}

使用GC.SuppressFinalize()以外的其他内容来呼叫this是否有意义?

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(foo);  // should this ever happen?
}

1 个答案:

答案 0 :(得分:2)

根据MSDN:

http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx

事实上你的例子可能是:GC.SuppressFinalize(foo) 将在某些情况下使用,但不会在常见处置模式的情况下使用。

在示例中,您可能希望为许多对象编写某种处置管理模式,而不是在对象中实现公共配置模式。另一个选择是,如果你想要一个对象保持抑制,以后可能会声称它?从来没有这样做..但这是可能的。

所以可能是的......可能不会发生 - 也许永远不会发生。