关于对象的存在和销毁

 

类的实例(即对象)是使用 New 关键字创建的。在使用新对象之前,通常必须对其执行初始化任务。  常见的初始化任务包括打开文件、连接到数据库以及读取注册表项的值。  Visual Basic 使用名为“构造函数”的过程(可控制初始化的特殊方法)控制新对象的初始化。  

           当对象离开范围之后,将由公共语言运行时 (CLR) 释放。Visual Basic 使用名为“析构函数”的过程控制系统资源的释放。  构造函数和析构函数共同支持创建可靠的和可预测的类库。  

         当系统确定对象不再需要时,CLR 会定期销毁这些对象。当系统资源短缺时,对象释放会快一些,否则就不那么频繁。  在对象失去范围和 CLR 释放对象这两个时间之间的延迟意味着您不能准确确定对象将在什么时候销毁,这与 Visual Basic 6.0 和早期版本中对象的情况不同。  在此类情况下,称对象具有“非确定生存期”。  在大多数情况下,非确定生存期并不会对您如何编写应用程序产生影响,只要您记住 Finalize 析构函数可能不会在对象失去范围时立即执行即可。  

             这两个垃圾回收系统之间的另一个差异涉及到 Nothing 的使用。 为利用 Visual Basic 6.0 和早期版本中的引用计数,程序员有时将 Nothing 赋给对象变量以释放这些变量所保存的引用。  如果变量保存的是对对象的最后一个引用,对象的资源将立即被释放。  在 Visual Basic 的更高版本中,尽管可能存在此过程仍然有价值的情况,但执行此赋值操作从不会导致被引用对象立即释放其资源。  若要立即释放资源,请使用对象的 Dispose 方法(如果可用)。  只有当变量生存期相对于垃圾回收器检测孤立对象所需时间较长时,才应当将变量设置为 Nothing。  


你可能感兴趣的:(关于对象的存在和销毁)