• IDisposeable 最佳实现


        public class MyClass : IDisposable
        {
            #region 变量声明
            // 指向外部非托管资源
            private IntPtr handle;
            // 此类使用的其它托管资源.
            private Component Components;
            // 跟踪是否调用.Dispose方法,标识位,控制垃圾收集器的行为
            private bool isDisposed = false; 
            #endregion
    
            #region Finalizer
            ~MyClass()
            {
                Dispose(false);
            }
            #endregion
    
            #region IDispseable 接口实现
            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }
            #endregion
    
            #region 释放方法
            /// <summary>
            /// 释放非托管资源
            /// </summary>
            /// <param name="isManual">手动调用为true,系统调用为flase</param>
            protected virtual void Dispose(bool isManual)
            {
                if (isDisposed) return; isDisposed = true;
                
                //释放非托管资源
                handle = IntPtr.Zero;
    
                if (isManual)
                {
                    //释放其他disose对象
                    Components?.Dispose();
                }
    
            } 
            #endregion
        }
  • 相关阅读:
    code3728 联合权值
    Codevs 4600 [NOI2015]程序自动分析
    code1540 银河英雄传说
    code1074 食物链
    堆排序
    哈夫曼树与哈夫曼码
    优先队列用法
    code1154 能量项链
    code1225 八数码Bfs
    javascript5
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/10298393.html
Copyright © 2020-2023  润新知