为什么要在USING语句中加上花括号?

时间:2013-10-29 21:29:32

标签: c# asp.net .net using

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

e.g。

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

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

using system.net

还有一件事,最后一件事,因为它说USING语句自动实现TRY CATCH然后为什么总是编码器把try catch放在里面使用?例如。

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 个答案:

答案 0 :(得分:6)

与C#中的所有其他情况一样。如果在使用

中有多行,则需要使用大括号

答案 1 :(得分:5)

{}内的所有内容都可以访问L。没有{},只有下一个语句可以访问。

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

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

using block的情况下,正如您所定义的那样,想法是对象L仅在执行使用块时存在。然后将其处理掉。这节省了必须记住关闭文件或连接并且通常整理,使用块为您执行此操作。

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

所述
  

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

答案 2 :(得分:1)

正如你所说,using system.net只是directive的别名,允许我们引用类型,而不必用完整的命名空间来量化它

另一方面,下面是syntactical sugar for a try/finally,以保证在实现IDisposable的类型上调用Dispose

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

答案 3 :(得分:0)

要回答问题的第二部分,它实际上只是节省了时间,在某些情况下有助于减少问题。我的意思是我可以将图像指定为:

System.Drawing.Image

ImageMagickNET.Image

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

ImageMagickNET.Image

我只想说:

Image

每当我需要引用课程时。

希望有所帮助!