知识大全 析构函数用于销毁类的实例
Posted 函数
篇首语:志行万里者,不中道而辍足。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 析构函数用于销毁类的实例相关的知识,希望对你有一定的参考价值。
析构函数是通过下面的形式声明的 [attributes] ~ identifier( ) destructor body 其中
attributes(可选) 附加的声明性信息 有关属性和属性类的更多信息 请参见 C# 属性 identifier identifier 与类名相同 destructor body 包含销毁类实例的语句的块 备注 不能对结构使用析构函数 只能对类使用析构函数
一个类只能有一个析构函数
无法继承或重载析构函数
无法调用析构函数 它们是被自动调用的
析构函数既没有修饰符 也没有参数 例如 下面是类 MyClass 的析构函数的声明
~ MyClass() // Cleanup statements 该析构函数隐式地对对象的基类调用 Object Finalize 方法 这样 前面的析构函数代码被隐式地转换为
protected override void Finalize() try // Cleanup statements finally base Finalize(); 这意味着对继承链中的所有实例递归地(从派生相近程度最大的到派生相近程度最小的)调用 Finalize 方法
程序员无法控制何时调用析构函数 因为这由垃圾回收器决定的 垃圾回收器检查是否存在应用程序不再使用的对象 它认为这些对象符合销毁条件并回收这些对象占用的内存 程序退出时也会调用析构函数
可以通过调用 GC Collect 方法强制进行垃圾回收 但大多数情况下应避免这样做 因为这样会导致出现性能问题 有关更多信息 请参见强制垃圾回收
示例 下面的示例创建三个类 这三个类构成了一个继承链 类 First 是基类 Second 是从 First 派生的 而 Third 是从 Second 派生的 这三个类都有析构函数 在 Main() 中 创建了派生相近程度最大的类的实例 程序运行时 注意这三个类的析构函数会自动被调用 并且是按照从派生相近程度最大的到派生相近程度最小的次序调用
// Destructors csusing System;class First ~First() Console WriteLine( First s destructor is called ); class Second: First ~Second() Console WriteLine( Second s destructor is called ); class Third: Second ~Third() Console WriteLine( Third s destructor is called ); public class MainClass public static void Main() Third myObject = new Third(); 输出 Third s destructor is calledSecond s destructor is calledFirst s destructor is called 使用析构函数释放资源 一般来说 您不必像使用 C++ 时那样关注内存管理 这是因为 NET Framework 垃圾回收器会隐式地管理对象的内存分配和释放 但是 当应用程序封装窗口 文件和网络连接这类非托管资源时 应当使用析构函数释放这些资源 当对象符合销毁条件时 垃圾回收器会运行对象的 Finalize 方法
cha138/Article/program/net/201311/13038相关参考
知识大全 编写类String 的构造函数、析构函数和赋值函数
编写类String的构造函数、析构函数和赋值函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!已知
C++中是不允许virtual构造函数的如果在构造函数前加virtual 以vc为例编译器报错为inlineistheonlylegalstorageclassforconstructors
C#中构造函数和析构函数的用法(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要 构造
C#中构造函数和析构函数的用法(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 声明了一个类
C#中构造函数和析构函数的用法(三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Bb=new
asp教程array数组函数实例asp数组函数用于创建一个静态的一维数组你不能声明一个动态数组使用阵列功能 请注意在一个数组的第一个元素总是标记例如零myArray的() 该清单的论据是价值将
类有一个特殊的成员函数叫做构造成员函数它通常用于初始化类的数据成员在创建对象时会自动调用类的构造成员函数Java中的构造成员函数必须与该类具有相同的名字另外构造成员函数一般都应用public类
成员函数相当于C或C++中的函数你应该用如下的方式说明一个成员函数 Typename(Parameter) //functionbody 注意每一个成员函数必须返回一个值或声明返回为空(vo
要想使用new生成一个内部类的实例需要先指向一个外部类的实例也就是先生成外部类的实例因为内部类可以调用外部类的人员成员当没有外部类实例的时候也就没有这些成员的内存空间内部类在实例化的时候调用外部类
矩形类Rectangle中也许你想把矩形的相关信息写入类如 intwidthheight; 当然你还可以写入其它信息但或许长和宽对简单的矩形来说已足够了现在类的定义如下所示 public