从“使用”语句的范围内返回?

问题描述:

我有一些代码,看起来像这样:从“使用”语句的范围内返回?

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

如果我从内返回一​​个“使用”,将使用还是清理?

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

+0

将此标记为答案,因为其100%正确。 – Will 2009-01-02 23:37:00

+0

诱惑-1为双关语,但+1都是一样的;) – johnc 2009-01-03 04:04:24

+0

这是一个递归双关联... – 2009-01-03 04:26:53

是的,它会的。

是的。它实际上只是try/finally声明的等效项 - finally块得到执行,但try块会退出,无论是通过异常,返回语句还是只是到达块的末尾。

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

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