我刚刚实现了 Dispose 模式,当我刚刚键入 GC.SuppressFinalize(this)
行时,我想知道是否有使用 以外的东西的用例this
作为方法的参数。
这是典型的模式:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this); // right here
}
用 this
以外的东西调用 GC.SuppressFinalize()
是否有意义?
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(foo); // should this ever happen?
}
最佳答案
根据 MSDN:
http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx
您的示例实际上有可能:GC.SuppressFinalize(foo) 某些场景会用到,一般dispose pattern的场景不会用到。
在示例中,您可能希望为许多对象编写某种处置管理模式,而不是从您的对象中实现通用处置模式。另一种选择是,如果您希望某个对象保持隐藏状态,然后再声明它?从来没有这样做过..但这是可能的。
所以有可能是的..可能不会发生 - 可能永远不会发生。
关于c# - 调用 GC.SuppressFinalize(this) 时是否存在不使用 "this"的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992740/