zoukankan      html  css  js  c++  java
  • C#实现IDisposable接口

    过C#实现IDisposable接口你可以完成了两个事务:你为客户端及时地释放自己持有的所有受控资源提供了机制;你为客户端提供了一种释放非受控资源的标准途径。

    此接口的主要用途是释放非托管资源。当不再使用托管对象时,垃圾回收器会自动释放分配给该对象的内存。但无法预测进行垃圾回收的时间。另外,垃圾回收器对窗口句柄或打开的文件和流等非托管资源一无所知。将此接口的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();
        }
    两种方式的执行结果是一样的
  • 相关阅读:
    leetcode 296 题解(暴力破解)
    2.7最大公约数(递归解法)
    2.6斐波那契数列(多分支递归)
    2.5翻转字符串(递归4 )
    2.4对arr数组元素求和
    2.3 用递归形式打印i到j
    2.2用递归方式解决阶问题
    2.1什么是递归?
    1.用数组的方式实现列表
    如何在电脑上安装Jupyter Notebook
  • 原文地址:https://www.cnblogs.com/aggierwyp/p/IDisposable.html
Copyright © 2011-2022 走看看