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

会计Q87850386

会计Q87850386

2016-02-19 15:08

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐C#箴言:使用构造函数初始化语句,无聊中的都看过来。

  在写程序的时候,往往会出现为一个类型提供不同场景的构造函数,可能大多构造函数比较相似,而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; }}

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

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

  例如:

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方法来重复编写构造函数)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

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

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

C#箴言:用静态构造函数初始化静态成员

编程语言 网络编程
C#箴言:用静态构造函数初始化静态成员

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

《Effective C#》:使用成员初始化语句

编程语言 网络编程
《Effective C#》:使用成员初始化语句

关于Javascript构造函数,类初始化实例

Web开发
关于Javascript构造函数,类初始化实例

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

C++基础:初始化类对象

编程语言 网络编程
C++基础:初始化类对象

关于初始化C++类成员

编程语言 网络编程
关于初始化C++类成员

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C#+低级Windows API钩子拦截键盘输入

C#+低级Windows API钩子拦截键盘输入

Excel中vba Unload介绍

Excel中vba Unload介绍
下拉加载更多内容 ↓