为什么要在 USING 语句中放置大括号

本文关键字:USING 语句 为什么 | 更新日期: 2023-09-27 18:37:18

何时以及为什么要在 Asp.net(C#) 中放置带有 USING 语句的大括号?

例如

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

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

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;
    }

为什么要在 USING 语句中放置大括号

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

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

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

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

using block的情况下,正如你所定义的,这个想法是对象L仅在执行use块时存在。然后处理掉。这样就不必记住关闭文件或连接并通常进行整理,using 块会为您做到这一点。

使用块实际上只是try/final块的"语法糖"。正如 http://msdn.microsoft.com/en-us/library/yh598w02.aspx 所解释的

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

正如您所说,using system.net 只是一个别名指令,并允许我们引用类型,而无需使用完整的命名空间对其进行量化

另一方面,下面是一个语法糖,用于尝试/最终,以保证在实现 IDisposable 的类型上调用Dispose

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

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

System.Drawing.Image

ImageMagickNET.Image

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

ImageMagickNET.Image

我只想说:

Image

每当我需要引用类时。

希望对您有所帮助!