c# - 调用 GC.SuppressFinalize(this) 时是否存在不使用 "this"的用例?

标签 c# design-patterns garbage-collection

我刚刚实现了 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/

相关文章:

java - 我们可以将下面的模式称为DI吗?

java - 如何从命令行检查正在运行的 JVM 的堆使用情况?

vb.net - 如何正确退出应用程序

java - 静态函数内局部变量的垃圾收集

c# - 错误 CS0246 找不到类型或命名空间名称 'JsonDeserializer' (RestSharp v107)

C# 泛型 如何获取作为参数传递给没有对象类型作为参数的泛型方法的类型?

c# - DevExpress:通过代码设置数据源和列标题

python - 模块 "duck typing"有陷阱吗?

c# - ELM327 发送多个命令时不返回任何内容

javascript - 这两种不同的模块模式语法之间的功能差异是什么