补充: 这个类继承Idisposable接口

解决方案 »

  1.   

    1.components 自始至终不都是 null,你没有看到它创建,只是因为你没有使用到。如果要使用到,请在Form上放置非可视控件。那么在InitComponent中就会创建该属性,并且会将新创建的控件加入其中。因此这个属性是用来管理控件的,不需要自己维护。2 Dispose是Object类在释放的时候自动调用的,因此不需要在Form类中手动调用。3 MS引入垃圾回收并不是第一个这样做的人!另外,垃圾回收并不是在资源紧张时才调用。垃圾回收分三个层次。每个层次定义的触发条件不一样。而垃圾回收最大的好处就是处理了未引用资源的释放问题。没有内存泄漏。4.自己写一个类,怎么都可以。一般用到资源,才需要在Dispose中写代码,比如打开文件等等。晚安:)
    Good Luck!
      

  2.   

    谢谢xiammy!!!假如我自已写一个类,包括一个DataSet和一个视图public class Test1
    {
        private DataSet DS ;
        private DataView DV ;
        public Test1()
        {
           ...
        }    ...    public DataView myView
        {
            get { return DV;}
            set { DV = value ;}
         }    ...
        ...
        ...
    }是不是有必要继承Idisposable接口,并实现dispose方法?如下所示:public class Test1 : Idisposable
    {
        private DataSet DS ;
        private DataView DV ;    protected override void Dispose( bool disposing )
        {
    base.Dispose( disposing );
        }    public Test1()
        {
           ...
        }    ...    public DataView myView
        {
            get { return DV;}
            set { DV = value ;}
         }    ...
        ...
        ...
    }谢谢指教!!!!!
      

  3.   

    是不是有必要继承Idisposable接口,并实现dispose方法?如下所示:可以的.
    你可以在dispose中释放你用到的对象的实例.
      

  4.   

    实现Idisposable接口用的。
      

  5.   

    这个问题我看可以这样理解!
    首先,object类没有定义dispose方法(这和Delphi不同).
    第二:IDisposable中Dispose的定义是这样的:[C#]
    void Dispose();所以你的做法有点错误哦:)
    第三:这里有个效率问题,.net帮助中是这样说的:
       类型的 Dispose 方法应该释放它拥有的所有资源。它还应该通过调用其父类型的 Dispose 方法释放其基类型拥有的所有资源。该父类型的 Dispose 方法应该释放它拥有的所有资源并同样也调用其父类型的 Dispose 方法,从而在整个基类型层次结构中传播该模式。要确保始终正确地清理资源,Dispose 方法应该可以被多次安全调用而不引发任何异常。   Dispose 方法应该为它处置的对象调用 GC.SuppressFinalize 方法。如果对象当前在终止队列中,GC.SuppressFinalize 防止其 Finalize 方法被调用。请记住,执行 Finalize 方法会大大减损性能。如果您的 Dispose 方法已经完成了清理对象的工作,那么垃圾回收器就不必调用对象的 Finalize 方法了。好了,有了这些话,就可以请出我们的代码了:)   public void Dispose() //接口实现
       {
          Dispose(true);
          // 防止垃圾回收站重新调用!
          GC.SuppressFinalize(this);
       }   protected virtual void Dispose(bool disposing)
       {
        //....
       }   ~BaseResource()      
       {
          Dispose(false);
       }详情请参考:ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconimplementingdisposemethod.htmGood Luck!