zoukankan      html  css  js  c++  java
  • 构建可终结类型和可处置类型

    class MyReSourceWrapper:IDisposable
        {
            private bool disposed = false;
            ~MyReSourceWrapper()
            {
                //在这里清除非托管资源
                CleanUp(false);
                Console.WriteLine("*******  In Finalize!*******");//仅仅为了测试
                //不要调用任何对象的Dispose()
            }
    
            public void Dispose()
            {
                //在这里清除资源
                CleanUp(true);
                Console.WriteLine("*******  In Dispise!*******");//仅仅为了测试
    
                //如果用户调用Dispose()就不需要终结,因此跳过终结
                System.GC.SuppressFinalize(this);
            }
            private void CleanUp(bool disposing)
            {
                //保证还没有被处置
                if (!this.disposed)
                {
                    if (disposing)
                    {
                        //释放托管的资源
                    }
                    //释放非托管资源
                }
                this.disposed = true;
            }
        }
      class Program
        {
          
            static void Main(string[] args)
            {
                MyReSourceWrapper rw1 = new MyReSourceWrapper();
                rw1.Dispose();//手动调用Dispose(),这不会调用终结器
                using (MyReSourceWrapper rw2 = new MyReSourceWrapper())
                { }//当使用支持IDisposable接口的.net类型时,这个句法结构将保证退出Using块时,
                //“正在使用的”对象将自动调用Dispose()方法
                MyReSourceWrapper rw3 = new MyReSourceWrapper();         
            }
         
        }

  • 相关阅读:
    python中单例模式
    python中常用的内置方法
    面向对象之反射
    绑定方法与非绑定方法
    python多态与抽象类
    python的组合与封装
    面向对象之继承与派生
    面向对象之类与对象
    python模块与包
    数据结构与算法_语言和框架特性前瞻和bug修复
  • 原文地址:https://www.cnblogs.com/wxj111/p/3077860.html
Copyright © 2011-2022 走看看