New 和 Finalize 方法在类层次结构中如何工作

更新:2007 年 11 月

创建了类的实例后,公共语言运行库 (CLR) 便会尝试执行名为 New 的过程,前提是它存在于该对象中。New 是名为 constructor 的过程的类型,用于在执行对象中任何其他代码之前对新对象进行初始化。New 构造函数可用于打开文件、连接到数据库、初始化变量以及处理任何需要在可使用对象前完成的其他任务。

当创建派生类的实例时,基类的 Sub New 构造函数首先执行,然后执行派生类中的构造函数。这是因为 Sub New 构造函数中的第一行代码使用语法 MyBase.New() 调用类层次结构中该类本身上面相邻类的构造函数。然后调用该类层次结构中每个类的 Sub New 构造函数,直到到达基类的构造函数。此时,基类构造函数中的代码执行,接着执行所有派生类中每个构造函数的代码,最后执行最相近派生的类中的代码。

构造函数和继承

当不再需要某个对象时,CLR 调用该对象的 Finalize 方法,然后释放其内存。Finalize 方法称为 destructor,因为它执行清理任务,如保存状态信息、关闭文件和与数据库的连接,以及在释放对象前必须完成的其他任务。

构造函数 Inheritance2

请参见

概念

对象生存期:如何创建和销毁对象