释放资源的一般范式——更锋利的C#代码小记

2018-06-18 01:44:40来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

public class Photo : IDisposable
{
//在Finalize函数中调用内部的Dispose方法
  ~Photo()
   {
     //被自动回收时仅释放托管资源,不释放非托管资源
      Dispose(false);
   }
   //提供了自命名的释放资源方法
   public void Close()
   {
    //当显式回收时则释放所有资源
      Dispose(true);
   }
    #region  IDisposable接口显式实现
        //显式实现IDisposable接口,避免同时出现Dispose方法和自定义命名方法(Close)
        public void IDisposable.Dispose()
        {
            //释放所有资源
            Dispose(true);
            //避免重复调用Finalize函数
            GC.SuppressFinalize(this);
        }
    #endregion
         //内部的Dispose方法,真正实施资源释放工作
        protected virtual void Dispose(bool disposing)
        {
            if(disposing==true)
            {
                //释放托管资源
            }
            //释放非托管资源
        }
}

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:迭代器———更锋利的C#代码小记(3)

下一篇:[.Net] 手把手带你将自己打造的类库丢到 NuGet 上