【附详细示例代码】关于对象实现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) 
             {