c#处理datacontext

Tom*_*len 2 c# linq asp.net dispose scope

3个具有相同功能的示例:

方法1

使用大括号

public static int TicketsRequiringSupportResponse()
{
    int ReturnValue = 0;
    using (var dc = new CrystalCommon.MainContext())
    {
        ReturnValue = (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
    }
    return ReturnValue;
}
Run Code Online (Sandbox Code Playgroud)

方法2

使用没有大括号

public static int TicketsRequiringSupportResponse()
{
    int ReturnValue = 0;
    using (var dc = new CrystalCommon.MainContext())
        ReturnValue = (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
    return ReturnValue;
}
Run Code Online (Sandbox Code Playgroud)

方法3

没有大括号,并在使用区块内返回

public static int TicketsRequiringSupportResponse()
{
    using (var dc = new CrystalCommon.MainContext())
        return (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
}
Run Code Online (Sandbox Code Playgroud)

所有这些都妥善处理吗?方法3是最好的,代码最少,但我担心它不能正确处理,因为return语句会中断.

Tal*_*joe 5

是的,他们都做同样的事情.大括号只增加明确的范围; 默认情况下,using仅适用于下一个语句.退出一个using遗嘱仍然处置(它基本上是一个尝试/终于幕后)我的偏好是#3,但为了清晰起见添加了括号.