首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果对象是在using-statement中创建的,并且没有显式绑定到引用,那么它是否有资格进行垃圾回收?

如果对象是在using-statement中创建的,并且没有显式绑定到引用,那么它是否有资格进行垃圾回收?
EN

Stack Overflow用户
提问于 2013-04-25 21:59:08
回答 2查看 95关注 0票数 4

我有这个(仅用于说明) C#代码:

代码语言:javascript
复制
using( new System.IO.MemoryStream() ) {
    System.Threading.Thread.Sleep(1000);
}

请注意,这里创建了一个MemoryStream,并且没有显式地绑定到引用。因此,除非由于using语句而有一些特殊处理,否则该对象没有对它的引用,并且可以在control离开using语句之前甚至在Sleep()完成之前被收集。

在control离开using语句之前,MemoryStream是否符合收集条件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-25 22:00:27

不,它不是。

在幕后,已经创建了对MemoryStream的隐藏引用,因此它仍然是活动的。

票数 3
EN

Stack Overflow用户

发布于 2013-04-25 22:00:17

不是的。

using语句编译为释放对象的finally块。

因此,它仍然在作用域中,直到块的末尾。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16216765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档