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

Hun*_*ain -4 .net c# asp.net using

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

例如

 using (Log L = new Log())
{
       ...
} 
Run Code Online (Sandbox Code Playgroud)

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

using system.net
Run Code Online (Sandbox Code Playgroud)

还有一件事,最后一件事,因为它说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;
    }
Run Code Online (Sandbox Code Playgroud)

TGH*_*TGH 6

与C#中的所有其他情况一样.如果在使用中有多条线,则需要使用大括号


Dav*_*rno 5

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

这是标准的C#语法,就像把{}的之后if,forwhile声明的例子.它定义了一个适用于该using语句的代码块.

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

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

实际上,使用块实际上只是try/finally块的"语法糖".如http://msdn.microsoft.com/en-us/library/yh598w02.aspx中所述

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