using 子句中的隐式变量会被垃圾回收吗?

发布于 2024-10-26 19:56:15 字数 190 浏览 1 评论 0原文

在下面的代码中,底层代码是否包含对 Foo 类型的未命名变量实例的硬引用,或者该项目是否容易受到垃圾回收的影响?

using(new Foo())
{
    // Something done here.
}

收集的项目只是一个信号量类型对象,它对资源执行一些引用计数,因此不会在代码块中引用它。

In the following code, does the underlying code contain a hard reference to the unnamed variable instance of type Foo, or is the item vulnerable to garbage collection?

using(new Foo())
{
    // Something done here.
}

The collected item is just a semaphore type object that performs some reference counting on resources so it isn't being referenced in the code block.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绅刃 2024-11-02 19:56:15

using 子句创建一个隐藏的本地范围变量来保存该对象(该变量由生成的 finally 子句使用)。

该变量可防止对象被 GC 回收。

您可以在规范中查看此变量

The using clause creates a hidden locally-scoped variable holding the object (this variable is used by the generated finally clause).

This variable prevents the object from being GC'd.

You can see this variable in the spec.

草莓酥 2024-11-02 19:56:15
using(new Foo())

Foo 的这个匿名实例将在 using 块之后超出范围,然后可能会被垃圾收集。

using(new Foo())

this anonymous instance of Foo will go out of scope after the using block and may be garbage collected then.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文