何时以及为什么在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;
}
答案 0 :(得分:6)
与C#中的所有其他情况一样。如果在使用
中有多行,则需要使用大括号答案 1 :(得分:5)
{}内的所有内容都可以访问L
。没有{},只有下一个语句可以访问。
这是标准的C#语法,就像在if
,for
或while
语句之后放置{}一样。它定义了一个适用于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
每当我需要引用课程时。
希望有所帮助!