豆腐炒菠菜C#如何进⾏对象的销毁和资源的释放?
一次有趣的活动1。对象的销毁不需要程序员来关⼼,垃圾回收机制会负责监控对象的使⽤状态,对象如果不被使⽤,则垃圾回收会在⼀定的内存使⽤情况下(⼀般是CLR认为内存不⾜,需要进⾏内存释放的时候),启动回收机制。
2。对象在销毁之前,需要进⾏不同的操作(因为有可能程序员希望在销毁之前释放⽂件句柄或者数据库连接),所以可以适⽤对象
的Finalize⽅法来释放这些资源(但在C#中,不允许这样操作,因此这句话为废话)。狮子狗技能
3。既然不能显⽰调⽤Finalize⽅法,我们可以通过⼀个别的办法来等效调⽤Finalize⽅法,这就是编写对象的析够函数(察看IL,对于析构函数的调⽤,其实也就是调⽤了Finalze⽅法)。这⾥就存在⼀个问题,为什么不能直接调⽤Finalze⽅法,究竟是出于⼀种什么⽬的?
4。⾄此,对象在CLR进⾏销毁时,就可以对资源进⾏释放,但是问题来了,我们可能希望⼿动的进⾏资源释放,不希望等到对象被销毁时才释放,这时我们可以实现对象的IDispo接⼝。在Dispo⽅法中释放资源。生日祝福自己的话>汪曾祺代表作
5。问题⼜来了,如果我们⼿动的释放了资源,但是在Finalize⽅法⾥⼜对资源进⾏释放(因为垃圾回收装甲兵学院
肥胖的女人会在销毁对象的时候调⽤这个⽅法,不管你之前是否调⽤了Dispo⽅法),显然不是我们希望的。对此,我们可以在Dispo⽅法⾥⾯使⽤GC.SuppressFinalize⽅法,保证垃圾回收不会重复的调⽤Finalize⽅法。
>江苏考试教育官网