c# - using block 是否为 GC 创建和维护引用?

标签 c# garbage-collection using using-statement

这主要是出于好奇,因为有更好的方法来实现我能想到的几乎所有用例(至少在 C# 和我经常使用的其他语言中),但我最近在这里看到一个 scoped mutex这是一个很酷的概念。

我的问题是,using 语句是否维护对其作用的对象的引用(即:防止 GC 运行)?

例如,如果我要这样做:

using (new ScopedMutex())
{
// ...
}

ScopedMutex 对象会一直存在到 using block 的末尾,还是 GC 会运行并在 block 中处理它?<​​/p>

最佳答案

不,GC 不会处理它。对该对象的引用存储在局部变量 ( see this answer for more info ) 中。一个局部变量被认为是一个 GC 根,并且该对象可以从它到达(它需要可以到达 using block 才能调用 Dispose )。

关于c# - using block 是否为 GC 创建和维护引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330486/

相关文章:

C# 静态方法里面的变量是一开始就初始化还是在方法第一次调用的时候初始化?

javascript - 在javascript中从内存中删除对象

AngularJS 如何使用路由删除 IE9 中的#符号

c# - 无法将类型 'Int' 隐式转换为 'T'

c# - 如何检索保存在 mysql 中的 asp.net 中的路径作为链接?

c# - 从服务器端文件夹中检索所有文件

java - 带有空队列的 PhantomReference

C++ `using` 模板类中类型别名的命令

c#在 "using"代码块中执行带参数的SqlCommand

c# - 显示计时器结果