从“使用”声明的范围内返回?

时间:2009-01-02 23:34:57

标签: c# .net

我有一些看起来像这样的代码:

using (DBDataContext dc = new DBDataContext(ConnectionString))
{
    Main main = new Main
    {
        ClientTime = clientTime
    };
    dc.Mains.InsertOnSubmit(main);
    dc.SubmitChanges();
    return main.ID;
}

如果我从“使用”内部返回,使用仍然会清理吗?

5 个答案:

答案 0 :(得分:24)

是的,这是using它的一大优势。

答案 1 :(得分:12)

是。它实际上只相当于try/finally语句 - 并且finally块被执行但是try块退出,无论是通过异常,返回语句,还是刚刚结束块。

答案 2 :(得分:3)

是的,它会。

答案 3 :(得分:1)

是的,在using语句的资源获取部分初始化的所有对象实例都将自动调用Dispose()方法。

答案 4 :(得分:0)

是的,它会清理干净。我认为这是C#的穷人试图支持Resource Acquisition Is Initialization模式。