-4

何时以及为什么在 Asp.net(C#) 中使用 USING 语句放置花括号?

例如

 using (Log L = new Log())
{
       ...
} 

为什么以及何时放置花括号?好处 ?以及我们用来在源代码中包含命名空间的 USING 和 using 之间有什么区别,例如

using system.net

还有一件事,最后一件事,因为它说 USING 语句自动实现 TRY CATCH 那么为什么编码人员总是将 try catch 放在 using 中?例如

using (SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCom))
{
    try
    {
        //sqlCom.ExecuteNonQuery();
        //sqlDA.Fill(ds,"Login");
        DataTable dt = new DataTable("DT_CR");
        sqlDA.Fill(dt);
        ds.Tables[0].Merge(dt);
        return ds;

    }
    catch (SqlException se)
    {
        Response.Write(se.Message);
        return null;
    }
4

4 回答 4

6

与 C# 中的所有其他情况一样。如果您在 using 中有多行,则需要大括号

于 2013-10-29T21:31:05.787 回答
5

{} 中的所有内容都可以访问L. 如果没有 {},则只有下一条语句可以访问。

这是标准的 C# 语法,就像将 {} 放在if, fororwhile语句之后一样。它定义了适用于该using语句的代码块。

虽然它使用与 import 相同的词using,但它的用法却大不相同。出于向后兼容性的原因,C# 语言设计者尝试重用保留字,而不是引入新的保留字。

在 a 的情况下using block,正如您所定义的那样,这个想法是该对象L仅在执行 using 块时才存在。然后将其丢弃。这样就不必记住关闭文件或连接并通常进行整理, using 块会为您完成。

using 块实际上只是 try/finally 块的“语法糖”。如http://msdn.microsoft.com/en-us/library/yh598w02.aspx所述

using 语句可确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。您可以通过将对象放在 try 块中,然后在 finally 块中调用 Dispose 来获得相同的结果;事实上,这就是编译器翻译 using 语句的方式。

于 2013-10-29T21:31:05.103 回答
1

正如您所说,using system.net这只是一个别名指令,并允许我们引用类型而不必用完整的命名空间量化它

另一方面,下面是try/finally 的语法糖,以保证Dispose在实现 IDisposable 的类型上调用

using (Log L = new Log())
{
       ...
}
于 2013-10-29T21:36:34.877 回答
0

要回答您问题的第二部分,它确实可以节省时间,并且在某些情况下有助于使事情变得不那么模棱两可。我的意思是我可以将图像指定为:

System.Drawing.Image

或者

ImageMagickNET.Image

这只是要导入的命名空间的一个示例。因此,如果我知道我的所有图像都将是 ImageMagickNET 类型,我将声明命名空间的 using/imports,然后代替:

ImageMagickNET.Image

我只想说:

Image

每当我需要引用该类时。

希望有帮助!

于 2013-10-29T21:41:47.190 回答