为什么要在 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;
}
与 C# 中的所有其他情况一样。如果内部有多行,则需要大括号
{} 中的所有内容都可以访问L
。如果没有 {},只有下一条语句可以访问。
这是标准的 C# 语法,就像将 {} 放在 if
、for
或 while
语句之后一样。它定义了一个应用于 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
每当我需要引用类时。
希望对您有所帮助!