日期:2014-05-19  浏览次数:21012 次

【附详细示例代码】关于对象实现IDisposable接口,使用Dispose()方法释放资源的疑问
我很希望自己的程序实现IDisposable,这样可以使用using语句简化代码、优化程序,但是网上关于IDisposable接口实现的说明很杂,我只糊里糊涂的学来了一点,照猫画虎做出了这个示例代码,想在此请教各位,下面的代码中,释放资源的部分代码写的是否正确?我是否需要在Dispose()方法中自己手动逐个清理每个字段的值?还是说C#会自己完成这些工作?


namespace   学校
{

public   class   学生   :   IDisposable
{

#region   基础代码

///   <summary>
        ///   构造函数
        ///   </summary>
        public   学生()
        {

        }

///   <summary>
        ///   对象唯一索引编号
///   对应属性:编号
        ///   </summary>
int   ID;

        ///   <summary>
        ///   [只读]
///   对象唯一索引编号
///   对应字段:ID
        ///   </summary>
public   int   编号
{

get
        {
                return   ID;
        }

}

///   <summary>
        ///   对应属性:姓名
        ///   </summary>
string   Name;

        ///   <summary>
        ///   对应字段:Name
        ///   </summary>
public   string   姓名
{

get
        {
                return   Name;
        }

set
        {
                Name=value;
        }

}

                ///   <summary>
                ///   重写ToString方法
                ///   </summary>        
                public   override   string   ToString()
                {
                        StringBuilder   S   =   new   StringBuilder();
S.AppendLine( "[学生]对象 ");
S.AppendLine( "编号(ID:int):   "   +   编号);
S.AppendLine( "姓名(Name:string):   "   +   姓名);
return   S.ToString();

                }

#endregion

#region   扩展功能代码

#region   IDisposable   成员

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

        protected   virtual   void   Dispose(bool   disposing)
        {