C# - 类_析构函数

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 /*------------------------------------------------------------------------------------------------------------
 7  * 类_析构函数:
 8  *      1. 主要用于在类销毁之前释放类实例所使用的托管和非
 9  *           托管资源.
10  *      2. 隐式的调用了object基类的Finalize()方法
11  *      3. 无参
12  *      4. 无返回值
13  *      5. 不能在结构体中定义析构函数, 只能对类使用析构
14  *      6. 一个类只能有一个析构
15  *      7. 无法继承或者重载
16  *      8. 无法显示调用,只能由垃圾回收期自动调用
17 ------------------------------------------------------------------------------------------------------------*/
18 namespace 类_析构函数
19 {
20     class Person
21     {
22         public  Person()
23         {
24
25         }
26         ~Person()
27         {
28             // 必须添加引用: System.Windows.Forms
29             System.Windows.Forms.MessageBox.Show("析构函数被调用了!");
30         }
31         /*----------------------------------------------------------------------------------------------
32          * ~Person() 析构函数被隐式的转换成下面的代码
33          * ----------------------------------------------------------------------------------------------
34         protected override void Finalize()
35         {
36             try
37             {
38                 Console.WriteLine("析构函数被调用了!");
39             }
40             finally
41             {
42                 base.Finalize();
43             }
44         }
45         ----------------------------------------------------------------------------------------------*/
46
47     }
48
49     class Program
50     {
51         static void Main(string[] args)
52         {
53             Person p = new Person();
54             Console.ReadLine();
55         }
56     }
57
58 }
时间: 2024-08-11 09:52:23

C# - 类_析构函数的相关文章

为什么基类的析构函数是虚函数?

1.第一段代码 #include<iostream> using namespace std; class ClxBase{ public: ClxBase() {}; ~ClxBase() { cout << "Output from the destructor of class ClxBase!" << endl; }; void DoSomething() { cout << "Do something in class

ado.net 实体类_数据访问类

实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实体类_数据访问类.App_Code { public class Users { private int _code; /// <summary> /// code /// </summary> public int Code { get { return _code; } set

base class类virtual析构函数

了解为什么base class的析构函数必须virtual声明,首先我们得知道pure virtual函数,impure-virtual函数与non-virtual函数在继承体系中所具有的作用. 我们知道继承中,有接口继承与实现继承. Base class中pure virtual函数代表了接口继承,该函数必须在derived class中重新声明,但是它也可以拥有自己的实现. Base class中impure-virtual函数则代表了接口继承且其可有自己的缺省声明,在derived cla

构造函数为什么不能为虚函数 &amp;amp; 基类的析构函数为什么要为虚函数

一.构造函数为什么不能为虚函数 1. 从存储空间角度,虚函数相应一个指向vtable虚函数表的指针,这大家都知道,但是这个指向vtable的指针事实上是存储在对象的内存空间的.问题出来了,假设构造函数是虚的,就须要通过 vtable来调用,但是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数. 2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到相应的调用.构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀.所以构造函数没有必要是虚

只有基类的析构函数需要为虚函数

// // main.cpp // TescDtor // // Created by Jiacan Li on 6/16/17. // Copyright © 2017 Jiacan Li. All rights reserved. // #include <iostream> using namespace std; class ClxBase1 { public: ClxBase1() { } virtual ~ClxBase1() { cout<<"~ClxBas

C++ 中的类构造函数 &amp; 析构函数

类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行. 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可用于为某些成员变量设置初始值. 下面的实例有助于更好地理解构造函数的概念: 1 #include <iostream> 2 3 using namespace std; 4 5 class Line 6 { 7 public: 8 void setLength( double len ); 9 double getLe

虚函数的使用 以及虚函数与重载的关系, 空虚函数的作用,纯虚函数-&gt;抽象类,基类虚析构函数使释放对象更彻底

为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针. 也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) 1 #include<iostream> 2 using namespace std; 3 4 class base{ 5 public: 6 /*virtual*/ void who(){ //define this function to virtual will be normal 7 cout << "this is th

构造函数为什么不能为虚函数 &amp; 基类的析构函数为什么要为虚函数

一.构造函数为什么不能为虚函数 1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的.问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数. 2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用.构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀.所以构造函数没有必要是虚函

jdk_Arrays类_排序方法_研究

private static void sort1(int x[], int off, int len) { // Insertion sort on smallest arrays //长度小于7,采用冒泡排序 if (len < 7) { for (int i=off; i<len+off; i++) for (int j=i; j>off && x[j-1]>x[j]; j--) swap(x, j, j-1); return; } //长度不小于7,采用快速