class car :IDisposable 
        {
            string carName;
            public string CarName
            {
                get { return carName; }
                set { carName = value; }
            }
            public car(string name)
            {
                carName = name;
            }
            public void Dispose()
            {
             //这我要怎么写
            }
        }

解决方案 »

  1.   

     private bool _disposed = false;
        public void Dispose()
        {
            Dispose(true);
        }    private void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    
                    GC.SuppressFinalize(this);
                }
                _disposed = true;
            }
        }
      

  2.   

    如果没有实现idispose接口
    使用            
    using (car c = new car("大众"))
                { }
    效果一样吗
      

  3.   

    不一样的,
    实现idispose接口 
    using (car c = new car("大众"))
                { }
    当出了using这个区域后,会自动调用Dispose的
      

  4.   

    也就是说如果没有实现Idispose接口
    出了using区域后就不会释放内存,使用using对对象内存的释放没有什么作用,对吗
      

  5.   


    Dispose里写的是对资源的释放,打个比方如果你的类是这么写的class A : IDisposable
    {
        private Image m_Image = Image.FromFile("1.jpg");    public void Dispose() 
        { 
            m_Image.Dispose(); //这里需要释放image资源
        } 
    }
      

  6.   

    一般情况下,如果你在类里面调用了其它系统资源,比如打开文件,调用打印机等等。那么在Dispose里要关闭这些连接,释放资源,具体用file.close()就行了。一般情况下,如果没有调用其它资源,直接写base.Dispose()就行了。剩下的就让垃圾回收器GC来处理吧。注:类释放资源方法如下:Car a = new Car(); 你直接 a=null;即可,GC会自动回收对象创建的资源。    using (car c = new car("大众"))
                { }     使用这个using ,因为对象是局部变量,出了这个函数,c的资源会被垃圾回收器扫描回收,不用做其它处理。
      

  7.   

    如果你定义的类里没用到托管或大内存的代码,无需继承IDispose,无需释放什么
      

  8.   

     GC.SuppressFinalize(this); 
      

  9.   

    引用IDisposable 接口 
    使用using释放资源,如果没引用。使用可能出现bug,
      

  10.   


    基本上就是这么个写法,当然如果有继承关系,上面的private还可以改为:protected,如果没有用到什么资源,根本没有必要实现此接口,或dispose()时什么都不做就行了;
      

  11.   

    .net自动回收机制,托管对象的创建和销毁时CLR控制的,你不可能主动释放他们
    除非是非托管对象(如API 的HANDLE)在C#为IntPtr,你就要调用CloseHandle(hobj)释放了