C#构造函数和析构函数

C#构造函数和析构函数

十年专注成都网站制作,企业网站制作,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于企业网站制作,高端网页制作,对成都门帘等多个方面,拥有多年的网站设计经验。

在你可以访问一个类的方法、属性或任何其它东西之前, ***条执行的语句是包含有相应类的C#构造函数和析构函数。甚至你自己不写一个构造函数,也会有一个缺省的构造函数提供给你。

 
 
 
  1. class TestClass  
  2. {  
  3. public TestClass(): base() {}   
  4. // 由编译器提供  

一个构造函数总是和它的类名相同,但是,它没有声明返回类型。总之,构造函数总是public的,你可以用它们来初始化变量。

 
 
 
  1. public TestClass()  
  2. {  
  3. // 在这给变量  
  4. // 初始化代码等等。  

如果类仅包含静态成员(能以类型调用,而不是以实例调用的成员),你可以创建一个private的构造函数。

 
 
 
  1. private TestClass() {} 

尽管存取修饰符在这一章的后面将要大篇幅地讨论,但是private意味着从类的外面不可能访问该构造函数。所以,它不能被调用,且没有对象可以自该类定义被实例化。并不仅限于无参数构造函数——你可以传递初始参数来初始化成员。

 
 
 
  1. public TestClass(string strName, int nAge) { …… } 

作为一个C/C++程序员,你可能习惯于给初始化写一个附加的方法,因为在构造函数中没有返回值。当然,尽管在C#中也没有返回值,但你可以引发一个自制的异常,以从构造函数获得返回值。更多有关异常处理的知识在第七章 "异常处理"中有讨论。

但是,当你保留引用给宝贵的资源,应该想到写一个方法来解决:一个可以被显式地调用来释放这些资源。问题是当你可以在析构函数(以类名的前面加"~"的方式命名)中做同样的事情时,为何还要写一个附加的方法。

 
 
 
  1. public ~TestClass()  
  2. {  
  3. // 清除  

你应该写一个附加方法的原因是垃圾收集器,它在变量超出范围后并不会立即被调用,而仅当间歇期间或内存条件满足时才被触发。当你锁住资源的时间长于你所计划的时间时,它就会发生。因此,提供一个显式的释放方式是一个好主意,它同样能从析构函数中调用。

 
 
 
  1. public void Release()  
  2. {  
  3. // 释放所有宝贵的资源  
  4. }  
  5. public ~TestClass()  
  6. {  
  7. Release();  

调用析构函数中的释放方法并不是必要的——总之,垃圾收集会留意释放对象。但没有忘记清除是一种良好的习惯。以上介绍C#构造函数和析构函数。

【编辑推荐】

  1. 介绍Mono C#编译器
  2. C#运算符重载学习总结
  3. 概述C#语言的结构体
  4. C#遗传算法学习笔记
  5. 讨论C#分部方法

分享题目:C#构造函数和析构函数
标题链接:http://www.csdahua.cn/qtweb/news45/280695.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网