using子句中的隐式变量是否会被垃圾收集?

Ste*_*ham 3 c# garbage-collection

在下面的代码中,底层代码是否包含对Foo类型的未命名变量实例的硬引用,或者是易受垃圾回收影响的项目?

using(new Foo())
{
    // Something done here.
}
Run Code Online (Sandbox Code Playgroud)

收集的项目只是一个信号量类型对象,它对资源执行一些引用计数,因此它不会在代码块中引用.

SLa*_*aks 10

using子句创建一个隐藏本地范围的变量来保存该对象(该变量由generated finally子句使用).

此变量可防止对象被GC'd.

您可以在规范中看到此变量.