Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果对象为';是否在using语句中创建,但未显式绑定到引用?_C#_.net_Using Statement - Fatal编程技术网

C# 如果对象为';是否在using语句中创建,但未显式绑定到引用?

C# 如果对象为';是否在using语句中创建,但未显式绑定到引用?,c#,.net,using-statement,C#,.net,Using Statement,我有这个(仅图)C#代码: 请注意,此处创建了MemoryStream,但未显式绑定到引用。因此,除非由于using语句而进行了一些特殊处理,否则对象没有对它的引用,可以在控件离开using语句之前,甚至在Sleep()完成之前收集对象 在控件使用语句离开之前,MemoryStream是否符合收集条件?否 using语句编译成处理对象的finally块 因此,在块结束之前,它仍然在范围内。不,它不是 在幕后,已创建了对内存流的隐藏引用,因此它仍然处于活动状态。在本例中,“幕后”是指使用语句的的编

我有这个(仅图)C#代码:

请注意,此处创建了
MemoryStream
,但未显式绑定到引用。因此,除非由于
using
语句而进行了一些特殊处理,否则对象没有对它的引用,可以在控件离开
using
语句之前,甚至在
Sleep()
完成之前收集对象

在控件使用语句离开
之前,
MemoryStream
是否符合收集条件?

using
语句编译成处理对象的
finally

因此,在块结束之前,它仍然在范围内。

不,它不是

在幕后,已创建了对
内存流的隐藏引用,因此它仍然处于活动状态。

在本例中,“幕后”是指使用
语句的
的编译器输出,它大致近似于
try finally
using
foreach
的相同之处在于,关键字指示编译器生成在后台实际执行腿部工作的代码,然后将该代码编译成IL。
using( new System.IO.MemoryStream() ) {
    System.Threading.Thread.Sleep(1000);
}