C#中析构函数,Close函数,Dispose函数的区别

  C#中析构函数是有垃圾搜集器来调用的,当所引用的堆上的数据当无效时,会隐式调用。一般表现为当引用变量超出其作用域时就会调用。  
   
  Close函数和Dispose函数则是一种约定。调用Close函数释放资源后可能还需要再次使用,而Dispose函数释放的资源不再使用。  
   
  另外,如果类实现了IDisposable接口,实例化类时可以使用using关键字,则当超出using关键字作用域时会隐式调用Dispose函数,如:  
   
  using(CTest   inst   =   new   CTest())  
   
  {  
   
          //Do   Something;  
   

  }     //Call   Dispose   Method   Here  

 

看得到的区别:

1.在protected override void Dispose(bool disposing)方法中,加一个MessageBox,再在窗体中加一按钮,按钮代码是this.Close();

那么MessabeBox并不会弹出来,也就是说并不会调用到DISPOSE方法

 

再把按钮事件代码改为:this.Dispose();

那么就会弹出MESSAGEBOX. 也就是直接销毁窗体所打开的所有资源.

2.在一个窗体中使用

Form Frm2=new Form2();

Frm2.ShowDialog();

 

在Form2中使用Close()方法关闭窗体Form2后,在FORM1中还是可以直接使用Frm2.ShowDialog()把Form2显示出来.

而用Dispose()方法关闭窗体Form2后, 在FORM1中就不可以直接使用Frm2.ShowDialog()把Form2显示出来.还是要创建新实例Form Frm2=new Form2();

转载于:https://www.cnblogs.com/msnadair/archive/2009/03/30/1425149.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值