调用GC.SuppressFinalize(this)时是否有使用"this"的用例?

Bob*_*orn 18 c# garbage-collection design-patterns

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

这是典型的模式:

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);  // right here
}
Run Code Online (Sandbox Code Playgroud)

GC.SuppressFinalize()用别的东西打电话有意义this吗?

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(foo);  // should this ever happen?
}
Run Code Online (Sandbox Code Playgroud)

G.Y*_*G.Y 2

根据 MSDN:

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

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

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

所以有可能是的……可能会发生,不会——而且可能永远不会发生。