资源的释放using与Dispose()

对于一些资源,尤其是那些比较重要的系统级资源(如文件系统对象、网络系统对象、系统图形界面对象),使用后必需及时显式的释放,因为系统的垃圾回收器(GC)并不能保证在合适的时候被触发。
使用方法
1.用完后显式调用Dispose()方法
2.使用using结构,在对象超出作用域时using结构会自动调用Dispose()。

using  (Graphics g  =   this .CreateGraphics())
{
g.DrawLine(Pens.Black, 
new Point(0,0), new Point(3,5));
}

等价于:

Graphics g 
=   this .CreateGraphics();
try {
g.DrawLine(Pens.Black, 
new Point(0,0), new Point(3,5));
}

finally {
if (g != null)
((IDisposable)g).Dispose();
}


 

是不是很多人不用c#中的using操作符?甚至不知道?
其实这个操作符在小处非常有用。

按照MSDN的解释
http://msdn2.microsoft.com/zh-CN/library/yh598w02(VS.80).aspx
using 关键字还用来创建 using 语句,此类语句定义将在何时释放对象

可以举个例子
class Demo:IDisposable
{
    public void Dispose()
    {
        Console.WriteLine("Dispose");
    }

    public void DemoMethod()
    {
        Console.WriteLine("hi");
    }
};

using (Demo a = new Demo())
{
    a.DemoMethod();
}
可以看到Dispose()方法也会同时执行,这样带来的方便是不言而喻的

具体事例,大家可以参考PetShop 4.0的SQLHelper.cs

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值