析构函数什么时候会调用?

我希望c#程序在退出后自动向数据库更新状态,所以定义了

Class A{

A(){
//一些数据库初始化工作
}
~A(){
//一些更新数据库工作
}
}
然后在CLI程序一运行的时候就new A了

但是我发现程序的窗口关闭后并没有调用析构

是我用错了?还是有其他方法控制程序退出时的调用?谢谢


2012年11月22日 3:34
回复 | 引用 |
答案
Question
登录进行投票
0
登录进行投票
dear

我是可以调用的,无法模拟你的问题,为了防止有人未依正常程序结束物件的生命周其,才有析构的出现

你可在 ~A() 设定中断点观察

析构是为了释放非托管资源用的,并非让你用来更新数据。

http://msdn.microsoft.com/zh-cn/library/66x5fx1b(VS.80).aspx

程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的。垃圾回收器检查是否存在应用程序不再使用的对象。如果垃圾回收器认为某个对象符合析构,则调用析构函数(如果有)并回收用来存储此对象的内存。程序退出时也会调用析构函数。


http://hi.baidu.com/yy3b2007com/item/c79634c74b257e78cfd4f81b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值