C# 类的析构函数和释放函数

今天覆习了一下C#基础知识,刚好看到了析构函数这里,有了进一步了解,记录一下,与君共勉

~类名()

{

      //一些要释放的代码

}

“~”做前缀,加类名就构成了析构函数。

我们不能自己调用析构函数,它是在.NET垃圾收集过程中调用的。我简单测试了一些,在WinForm中简单调用类,当窗口关闭时,会调用这个类的析构函数。

我用想用到析构函数,是因为在处理过程中,要根据实际情况,在不同时期释放和建立新的对象。

按照MSDN上的话,如果你的代码中包含需要及时清理的非托管资源,别把它留给析构函数处理,因为不能保证析构函数会很快运行(.NET垃圾收集我们应该控制不了吧)。我们可以把资源的清理代码封装在一个VOID类型的无参数方法中,一般叫做Dispose。

例如我写的一个基类:

public class CSMOBasic
{

private bool disposed = false;

public CSMOBasic()
{
    #region 构造代码
    #endregion
}

#region 析构函数,和清理函数

/// <summary>
/// 析构函数
/// </summary>
~CSMOBasic()
{
    //
    Dispose(false);
}

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
    if (disposed == false)
    {
        if (disposing == true)
        {
            //
            //释放非托管资源的代码
        }
        //
        //释放托管资源的代码
    }
    disposed = true;
}

#endregion

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章