7、你们先聊,我先走了!
小色:半天没轮到咱俩说话了,咱继续聊!刚才说到你想让我对象临走的时候打个招呼对吧?
小力:呼~~Zzzzz~
小色:小猪,醒醒,圣代都吃鼻子里了。给你讲个新东西,是与构造函数对应的,叫析构函数。
小力:啊……好啊,服务员~拿点纸!还真吃鼻子里了……
小色:晕,猪也不用鼻子吃东西啊。析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作,比如资源释放之类的。但是由于C#已经自带了垃圾回收机制,所以析构函数在C#中已经不怎么用了,而C++中出现的次数明显多一些。
小力:你的意思是说想把“ByeBye”放到析构函数中让她自动说?这个办法倒是不错,虽然不是资源的释放,可是也能体现出来析构函数的执行顺序和用途。
小色:析构函数的定义特简单,跟定义构造函数一样,只需要在前面加上”~”符号就可以了。不过析构函数没有参数没有访问类型,并且类中只能定义一次。
小力:说了这么多,写出代码来看看吧!
//Girl类: using System; class Girl { public string name;//字符串型,用来保存姓名 public uint high;//无符号整型,用来保存身高 public int weight;//有符号整型,用来保存体重 private int age;//有符号整型,用来保存年龄 public Girl() { //显式声明无参构造函数 } public Girl(char sex) {//构造方法。通过构造方法的参数传递,来给Sex属性赋值 this.Sex = sex; } ~Girl() {//析构函数 Console.WriteLine("析构函数:你们先聊,我先走了!ByeBye~~"); Console.ReadLine(); } private char sex;//改为私有变量,用来保存性别 public char Sex {//性别属性 get { return sex; }//在外部和内部都可以调用访问器 private set { sex = value; } //私有设置器,只能在本类中调用修改器 } public int Age { get { return age; } set { if (value > 0 && value < 100) { age = value; } else { age = 18; } } } public void Cook() {//定义做饭方法 Console.WriteLine("红豆,大红豆,芋头~~ 锉锉锉锉……"); } public void Introduce() {//定义自我介绍方法 Console.WriteLine("我叫:{0},性别{1},今年{2}岁,身高{3}cm,体重{4}斤", name, this.Sex, age, high, weight); } } |
// Program测试类 class Program { static void { Girl lili = new Girl('女');//实例化一个对象 lili.name = "莉莉";//给实例变量姓名赋值,注意string类型使用双引号 lili.Age = 23;//给实例变量年龄赋值 lili.high = 168;//给实例变量身高赋值 lili.weight = 105;//给实例变量体重赋值 lili.DoIntroduce();//调用自我介绍方法 lili.DoCooking();//调用做饭方法 } } |
结果如下:
我叫:莉莉,性别女,今年23岁,身高 红豆,大红豆,芋头~~ 锉锉锉锉…… 析构函数:你们先聊,我先走了!ByeBye~~ |
小力:对啊,这样的话,析构函数就会在对象销毁前自动调用了。
小色:恩,那就总结一下构造函数与析构函数的区别吧。
构造函数 |
析构函数 |
构造函数是和类同名.没有返回值 |
析构函数是在类名前加~.也没有返回值 |
构造函数上在对象创建时执行 |
析构函数是在程序结束时执行 |
构造函数可以有参数 |
析构函数没有参数 |
构造函数可以有访问修饰符 |
析构函数不能加访问修饰符 |
构造函数可以重载带参 |
析构函数只能有一个且没有参数 |
构造函数是创建 |
析构函数是销毁 |
小力:看来C#想的是好周到啊。今天你一口气说了这么多的概念,虽然以前都见过,可是你的例子举得挺通俗的,比那些呆板的代码好玩多了。我可得回去好好消化了,这也更让我坚定了学C#的决心,那以后我有什么问题就给你打电话了,可千万别嫌我烦啊。
小色:看你说的,只要我会的,我都会告诉你的。(不会的我查会了也得告诉你啊…我有一颗火热的心…)
(“你这个流氓,为什么不接电话!臭流氓,臭流氓臭流氓,臭流氓……”来自“叫兽”蠢爸爸小星的来电铃声)
小色:“○◎※→‰€#@♀…”,寒……我妈妈打来的电话。
小力:恩,没事,正好我男朋友也给我发短信找我了,我得走了啊,咱们电话联系啊,我先走了,ByeBye。
(晴天那个霹雳啊…一颗火热的心顿时浇了一盆冷水,一触即碎!都怪这个流氓来电铃声!)
小力:“喂!~亲爱的,我在XX街的碰碰凉呢,过来接我吧。我们去看电影去,好,一会见!么么~~”
(…咔嚓…哗啦…碎了…孤坐在圆桌前吸着余下的一点酸梅汤,摘过桌旁放的假花,“爱我,不爱我,爱我……”)
(请看下回:本节总结)
完稿日期: