首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于对象存活期疑惑

2012-07-05 
关于对象存活期迷惑我写个一个类 class1。继承自组建Inherits Component在这个类重载了Protected Overrides

关于对象存活期迷惑
我写个一个类 class1。继承自组建
  Inherits Component

 在这个类重载了  
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
  MyBase.Dispose(disposing)
  Over()
  End Sub
释放所有自定义的资源。

然后再另外有个控件B 定义了类型为class1的窗体级变量 c1=new classs1 用完了,顺手调用了c1.Dispose

再然后,因为某种需要要用到class1 
我用isnothing判断 c1是否nothing 
if isnothing(c1) then c1=new class1

但奇怪的是。虽然上面的已经c1.Dispose 了 但在 isnothing(c1)还是返回 false 这是为什么呢 我都已经dispose了啊

[解决办法]
除非代码设置 c1 为 nothing 或 c1 所在的 B 被释放,否则 c1 就一直存在,Dispose 充其量就一个方法,普遍作用是释放非托管资源,而托管的 class1,就得由系统在适当的时机来释放了,我们能做的,就是取消它所有引用,扫除释放前的障碍。
[解决办法]
Dispose跟 = null 两回事儿,Dispose主要是用来释放资源,而不是析构的。

热点排行