黑马程序员技术交流社区
标题:
Using 到底有没有使用价值
[打印本页]
作者:
于驭龙
时间:
2013-8-15 18:08
标题:
Using 到底有没有使用价值
每次使用它安全注销..都会使代码复杂化..
比如在using(new 对象){方法体}..
那为什么不写个方法类似using的委托直接处理它呢...
作者:
lvjayj
时间:
2013-8-15 21:51
我觉得using的这种用法,使代码结构很清晰。
比如声明多个对象的时候,或者有多个链接和内存需要释放时。
namespace statement
{
//指定Font类的别名为F
using F = System.Drawing.Font;
class Program
{
static void Main(string[] args)
{
//using 强制资源清理
using (TextWriter writer = File.CreateText(@"E:\test.txt"))
{
//使用别名来实例化对象
F font = new F("宋体", 12);
writer.WriteLine(font.Name.ToString() + font.Size.ToString());
}
//上面的using语句等价于
TextWriter w = File.CreateText(@"E:\test.txt");
try
{
F font = new F("宋体", 12);
w.WriteLine(font.Name.ToString() + font.Size.ToString());
}
finally
{
if (w != null) w.Dispose();
}
//也可以在using之前声明对象
TextReader r = File.OpenText("E://test.txt");
using (r)
{
Console.WriteLine(r.ReadToEnd());
}
//对象类型相同时,可以使用多个:
using (StreamReader reader = new StreamReader("1.txt"), reader2 = new StreamReader("2.txt"))
{
//do something
}
//嵌套using
using (SqlConnection conn = new SqlConnection())
{
using (SqlCommand cmd = new SqlCommand())
{
//嵌套using 缩进太多,从而不便于观察代码,可以用,但适可而止,如果有多层嵌套请使用 多重using
//这一层如果出错,不会影响上一层conn的释放,也就是说可以这么用
}
}
//多重using
using (StreamReader reader = new StreamReader("1.txt"))
using (StreamWriter writer = new StreamWriter("1.txt"))
using (SqlConnection conn = new SqlConnection())
using (SqlCommand cmd = new SqlCommand())
{
//这样操作也可以最后释放所有资源,并且不会因嵌套using而产生太多缩进
//通过reflector观察发现系统最后会生成跟嵌套using相同的代码
}
}
}
}
复制代码
作者:
于驭龙
时间:
2013-8-16 00:00
{:soso_e143:}其实是我不喜欢NEW......的原因....一般都内部自NEW了....
如果用USING ....下次就找不到这个对象了...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2