IDisposable 在C#中的作用

    CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记

首先来看MSDN中关于这个接口的说明:

原文

[ComVisible(true)]

public interface IDisposable

{    // Methods

    void Dispose();

}

1.[ComVisible(true)]:

    指示该托管类型对 COM 是可见的.

2.此接口的主要用途是释放非托管资源。

    当不再使用托管对象时,垃圾回收器会自动释放分配给该对象的内存。但无法预测进行垃圾回收的时间。另外,垃圾回收器对窗口句柄或打开的文件和流等非托管资源一无所知。将此接口的Dispose方法与垃圾回收器一起使用来显式释放非托管资源。当不再需要对象时,对象的使用者可以调用此方法。

Dispose()方法必须需要实现!

一:基本应用

1.我们来定义一个实现了IDisposable接口的类,代码如下:

public class CaryClass :IDisposable
{

    public void DoSomething()

    {

        Console.WriteLine("Do some thing....");

     }


     public void Dispose()

     {

          Console.WriteLine("及时释放资源");

      }

}


2.我们有两种方式来调用:

   2.1.第一种方式,使用Using语句会自动调用Dispose方法,代码如下:

   using (CaryClass caryClass = new CaryClass())

   {

        caryClass.DoSomething();

    }

  

   2.2第二种方式,现实调用该接口的Dispose方法,代码如下:

    CaryClass caryClass = new CaryClass();

    try    {

           caryClass.DoSomething();

      }

     finally

     {

       IDisposable disposable = caryClass as IDisposable;

       if (disposable != null)

            disposable.Dispose();

      }

两种方式的执行结果是一样的。


使用try/finally 块比使用 using 块的好处是即使using中的代码引发异常,CaryClass的Dispose方法仍有机会清理该对象。所以从这里看还是使用try/catch好一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值