C# 如果对象为';是否在using语句中创建,但未显式绑定到引用?
我有这个(仅图)C#代码: 请注意,此处创建了C# 如果对象为';是否在using语句中创建,但未显式绑定到引用?,c#,.net,using-statement,C#,.net,Using Statement,我有这个(仅图)C#代码: 请注意,此处创建了MemoryStream,但未显式绑定到引用。因此,除非由于using语句而进行了一些特殊处理,否则对象没有对它的引用,可以在控件离开using语句之前,甚至在Sleep()完成之前收集对象 在控件使用语句离开之前,MemoryStream是否符合收集条件?否 using语句编译成处理对象的finally块 因此,在块结束之前,它仍然在范围内。不,它不是 在幕后,已创建了对内存流的隐藏引用,因此它仍然处于活动状态。在本例中,“幕后”是指使用语句的的编
MemoryStream
,但未显式绑定到引用。因此,除非由于using
语句而进行了一些特殊处理,否则对象没有对它的引用,可以在控件离开using
语句之前,甚至在Sleep()
完成之前收集对象
在控件使用语句离开之前,MemoryStream
是否符合收集条件?否
using
语句编译成处理对象的finally
块
因此,在块结束之前,它仍然在范围内。不,它不是
在幕后,已创建了对内存流的隐藏引用,因此它仍然处于活动状态。在本例中,“幕后”是指使用语句的的编译器输出,它大致近似于try finally
块using
与foreach
的相同之处在于,关键字指示编译器生成在后台实际执行腿部工作的代码,然后将该代码编译成IL。
using( new System.IO.MemoryStream() ) {
System.Threading.Thread.Sleep(1000);
}