C# 使用语句最佳实践

C# 使用语句最佳实践,c#,using,C#,Using,这可能是一个愚蠢的问题,但由于我自己无法给出答案,我会在这里问它 让我们在http处理程序中使用一个模块(web应用程序是使用ASP.NET用C#编写的),并让该模块实现IDisposable接口。然后一个常见的方法是 使用以下模块: using(var module = new ModuleName(param1, param2, param3)) { } 最好是将任何代码放在变量上,而这些变量只在语句的主体内部或之前使用。在代码方面: 第一种方法更好(为什么更好)还是第二种方法更好: 第

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

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

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

}
最好是将任何代码放在变量上,而这些变量只在
语句的主体内部或之前使用。在代码方面:

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

第一种方法

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
}
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))
{

}
使用(变量模块=新模块名(param1、param2、param3))
{
int a=Request.GetParam(“aNumber”);
字符串b=Request.GetParam(“bString”);
//以及http请求中包含的其他参数
}
第二种方法

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
}
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))
{

}
inta=Request.GetParam(“aNumber”);
字符串b=Request.GetParam(“bString”);
//以及http请求中包含的其他参数
使用(变量模块=新模块名称(参数1、参数2、参数3))
{
}

如果没有任何技术原因——这是一个基于意见的决定——我们应该选择第一种方法而不是第二种方法,或者反之亦然,请让我知道,以便删除我的帖子

这取决于您是否需要使用
-语句的
范围之外的变量。如果是这样,你无论如何都需要在外面申报。如果没有,请使用
中声明它们

为什么??这一切都是关于可读性、故障安全性和重构

这不仅适用于使用
,而且通常适用于作用域和变量声明。阅读:


这取决于使用
-statement是否需要那些超出
范围的变量。如果是这样,你无论如何都需要在外面申报。如果没有,请使用
中声明它们

为什么??这一切都是关于可读性、故障安全性和重构

这不仅适用于使用
,而且通常适用于作用域和变量声明。阅读:


始终选择较小的范围以避免混淆。因此,如果在
using
之外不需要变量,请将它们放在using内部。顺便说一句,这个问题主要是基于观点的。为了避免混淆,我们倾向于较小的范围。因此,如果在
using
之外不需要变量,请将它们放在using内部。顺便说一句,这个问题基本上是基于观点的,但这对任何代码块来说都是通用的,不仅仅是
使用
@RegEdit:这就是为什么我发布了一些问题的链接,这些问题不仅与
使用
-语句有关,而且与范围和变量声明有关。@TimSchmelter非常感谢您的回答@TimSchmelter,所以你已经发布了链接,但我认为像你现在这样明确地声明是有帮助的。在任何情况下,
后面的项目符号都是关于可读性、故障安全性和重构的
可能被认为是关于可读性、故障安全性和重构的。没错,但这对任何代码块来说都是通用的,不仅仅是
使用
@RegEdit:这就是为什么我发布了问题的链接,这些问题不仅与
使用
-语句有关,而且与范围和变量声明有关。@TimSchmelter非常感谢您的回答@TimSchmelter,所以你已经发布了链接,但我认为像你现在这样明确地声明是有帮助的。在任何情况下,
后面的项目符号都是关于可读性、故障安全性和重构的
可能被认为是关于可读性、故障安全性和重构的。