我有这个(仅用于说明) C#代码:
using( new System.IO.MemoryStream() ) {
System.Threading.Thread.Sleep(1000);
}请注意,这里创建了一个MemoryStream,并且没有显式地绑定到引用。因此,除非由于using语句而有一些特殊处理,否则该对象没有对它的引用,并且可以在control离开using语句之前甚至在Sleep()完成之前被收集。
在control离开using语句之前,MemoryStream是否符合收集条件?
发布于 2013-04-25 22:00:27
不,它不是。
在幕后,已经创建了对MemoryStream的隐藏引用,因此它仍然是活动的。
发布于 2013-04-25 22:00:17
不是的。
using语句编译为释放对象的finally块。
因此,它仍然在作用域中,直到块的末尾。
https://stackoverflow.com/questions/16216765
复制相似问题