我只是在实现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?
}发布于 2013-04-25 16:12:07
根据MSDN的说法:
http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx
实际上,可以在某些场景中使用您的示例: GC.SuppressFinalize(foo),但不能在通用dispose模式的场景中使用。
例如,您可能希望为多个对象编写某种类型的dispose管理模式,而不是从对象内部实现通用的dispose模式。另一种选择是,如果您希望对象保持被抑制状态,然后可能会声明它?从来没有这样做过..但这是有可能的。
所以有可能是的..可能不会发生--也可能永远不会发生。
https://stackoverflow.com/questions/15992740
复制相似问题