c# - `using` 是否处理其中声明的所有对象?

标签 c#

我想知道如果我执行 returnthrow 操作,在 using 语句中创建的对象是否会被释放。示例如下。

using(SomeClass thing = new SomeClass())
{
  ...
  if(condition)
    return;
  ...
}

上面的内容会让人感到困惑还是GC值得信任?

最佳答案

是的,会的。 using 语句将导致创建一个 finally block 。即使在相关的 try block 中抛出异常,或者如果该 try 中有 return 语句,finally block 的代码也会运行堵塞。

只有少数异常会导致finally block 的代码不被执行,它们都列在here 中。 ,但我的猜测是,在您的情况下,您将能够承受这些后果。

关于c# - `using` 是否处理其中声明的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410806/

相关文章:

c# - 最合适的数据访问方式

c# - 使用组合框 MVVM 绑定(bind)枚举描述

c# - 现在,为什么 Monitor 需要一个条件变量?

c# - Windows 8 的 UDID

c# - 如何向 Azure 移动服务调用添加自己的 header ?

c# - 如何在 C# 和 C++ 代码之间共享常量?

c# - 解析传递给 LINQ 表达式所在方法的 LINQ 参数

c# - 切换变量以供外部使用

c# - 包装类的代码生成器

c# - 安装windows服务失败: service already exists