C#构造函数概述

在写程序的时候,往往会出现为一个类型提供不同场景的构造函数,可能大多构造函数比较相似,而C#中又不允许缺省参数,因此C#构造函数的编写无疑是一个重复工作。但是使用Copy和Paste来完成构造函数的编写,有时候很难达到统一,尤其是当成员发生变化的时候。因此比较常见的替换方法就是为构造函数提供一个统一的成员函数来完成初始化工作。

创新互联公司服务项目包括金川网站建设、金川网站制作、金川网页制作以及金川网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,金川网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到金川省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

 
 
 
  1. public class MyClass
  2. {
  3. private int _Age;
  4. private string _Name;
  5. public MyClass( string Name)
  6. {
  7. InitMember( Name, 20 );
  8. }
  9. public MyClass( string Name, int Age )
  10. {
  11. InitMember( Name, Age );
  12. }
  13. /// 
  14. /// Init class members
  15. /// 
  16. ///  name="Name">
  17. ///  name="Age">
  18. private void InitMember( string Name, int Age )
  19. {
  20. _Age = Age;
  21. _Name = Name;
  22. }

不过,在C#中提供了更为简明的方法,就是在构造函数初始化语句中调用另一C#构造函数,那么上面的形式可以改写为如下这样。

 
 
 
  1. public class MyClass
  2. {
  3. private int _Age;
  4. private string _Name;
  5. public MyClass( string Name):this( Name, 20 )
  6. {}
  7. public MyClass( string Name, int Age )
  8. {
  9. _Age = Age;
  10. _Name = Name;
  11. }
  12. }

对于这两者来说,执行效率没有太大差别,但从代码质量而言,后者要好很多,而且会使代码看起来更清晰。

其次,对于基类的调用。由于成员函数不能调用基类的构造函数,所以对于第一种编写就比较困难,后者就简单多了。

 
 
 
  1. public class MyClass:BaseClass
  2. {
  3. private int _Age;
  4. private string _Name;
  5. public MyClass( string Name):this( Name, 20 )
  6. {}
  7. public MyClass( string Name, int Age ):base( Name, Age )
  8. {
  9. _Age = Age;
  10. _Name = Name;
  11. }
  12. }

这里要提的一点就是构造函数初始化语句,对于“this”或者“base”之类的调用只能有一个,不能并存。

最后,就是对于readonly常量的初始化,由于readonly常量只能通过成员初始化语句或者在构造函数中被修改,因此在成员函数中无法修改readonly常量,这也是C#构造函数初始化语句要比成员函数好的重要一个因素。

网页名称:C#构造函数概述
链接地址:http://www.mswzjz.com/qtweb/news2/166852.html

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

广告

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