使用语句最佳实践

Chr*_*tos 1 c# using

这可能是一个愚蠢的问题,但由于我不能自己给出答案,我会在这里提出.

让我们在http处理程序中使用一个模块(Web应用程序是使用ASP.NET用C#编写的),并让这个模块实现IDisposable接口.然后一个常见的方法是使用如下模块:

using(var module = new ModuleName(param1, param2, param3))
{

}
Run Code Online (Sandbox Code Playgroud)

是否更好地将任何代码放在我们将仅在此using语句的主体内部或之前使用的变量中.在代码方面:

是第一种方法还是第二种方法更好(以及为什么):

第一种方法

using(var module = new ModuleName(param1, param2, param3))
{
    int a = Request.GetParam<int>("aNumber");
    string b = Request.GetParam<string>("bString");
    // and other parameters contained to the http request
}
Run Code Online (Sandbox Code Playgroud)

第二种方法

int a = Request.GetParam<int>("aNumber");
string b = Request.GetParam<string>("bString");
// and other parameters contained to the http request

using(var module = new ModuleName(param1, param2, param3))
{

}
Run Code Online (Sandbox Code Playgroud)

如果没有任何技术原因 - 这是基于意见的决定 - 我们应该更喜欢第二种方法的第一种方法,反之亦然,请告诉我,以便删除我的帖子.

Tim*_*ter 8

这取决于您是否需要在using-statement 范围之外的那些变量.如果是这样,你无论如何都要在外面宣布它们.如果没有,请在中声明using.

为什么?这完全取决于可读性,故障安全性和重构性.

这不仅适用于using范围和变量声明.读: