18

我只是在实现 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?
}
4

1 回答 1

2

根据 MSDN:

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

实际上,您的示例: GC.SuppressFinalize(foo) 可能会在某些场景中使用,但不会在常见处置模式的场景中使用。

例如,您可能希望为许多对象编写某种处置管理模式,而不是在您的对象中实现通用处置模式。另一种选择是,如果您希望一个对象保持抑制状态,然后再声明它?从来没有这样做过..但这是可能的。

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

于 2013-04-25T08:12:07.337 回答