标签: c# garbage-collection
在下面的代码中,底层代码是否包含对Foo类型的未命名变量实例的硬引用,或者是易受垃圾回收影响的项目?
using(new Foo()) { // Something done here. }
收集的项目只是一个信号量类型对象,它对资源执行一些引用计数,因此它不会在代码块中被引用。
答案 0 :(得分:10)
using子句创建一个隐藏本地范围的变量来保存对象(此变量由生成的finally子句使用)。
using
finally
此变量可防止对象进行GC。
你可以see this variable in the spec。
答案 1 :(得分:3)
using(new Foo())
这个Foo的匿名实例将在>>使用块之后超出范围,然后可能会被垃圾收集。
Foo