关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>ASPNET>>正文|C#箴言:使用构造函数初始化语句

C#箴言:使用构造函数初始化语句

[ 来路:21kn.com    时间:2007-7-8 17:35:57    点击: ]

 

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

  例如:

public class MyClass
{
 private int _Age;
 private string _Name;

 public MyClass( string Name)
 {
  InitMember( Name, 20 );
 }
 public MyClass( string Name, int Age )
 {
  InitMember( Name, Age );
 }

 /// <summary>
 /// Init class members
 /// </summary>
 /// <param name="Name"></param>
 /// <param name="Age"></param>

 private void InitMember( string Name, int Age )
 {
  _Age = Age;
  _Name = Name;
 }
}

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

public class MyClass
{
 private int _Age;
 private string _Name;

 public MyClass( string Name):this( Name, 20 )
 {}

 public MyClass( string Name, int Age )
 {
  _Age = Age;
  _Name = Name;
 }
}

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

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

  例如:

public class MyClass:BaseClass
{
 private int _Age;
 private string _Name;

 public MyClass( string Name):this( Name, 20 )
 {}

 public MyClass( string Name, int Age ):base( Name, Age )
 {
  _Age = Age;
  _Name = Name;
 }
}

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

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

  有了上面的说明,对于两者的对比,可以形成如下这个简单的对比表。

 效率代码结构基类调用静态成员初始化
构造函数初始化语句一样简明清晰容易可以
成员函数比较清晰比较麻烦不能
    (注:这里不提倡Copy/Paste方法来重复编写构造函数)

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:C#应用:从模拟字符串型的枚举说起  下一篇:.net操纵xml文件类(c#)

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号