在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分封装成一个方法,但还有一种更为合理简单的方法,下面就通过this关键字来实现串联构造函数做一简单示例。

示例代码如下:

 public class Person
{
public string personName;
//定义年龄为可空类型,这样就可以赋予其null值
public int? personAge; //下面前三个构造函数都是去调用参数最多的第四个构造函数,只取它们所需要的部分参数即可
//这样的做法就是this串联构造函数
public Person():this("",)
{ } public Person(string name):this("evan",null)
{ } public Person(int age):this("",)
{ } public Person(string name, int? age)
{
this.personName = name;
//通过 ?? 判断传入的age是否null值
//如果属于null值,则赋值100
this.personAge = age ?? ;
} public void Display()
{
Console.WriteLine("Name:{0},Age:{1}\n", personName, personAge);
}
}

主函数调用如下:

 static void Main(string[] args)
{
Person per1 = new Person();
per1.Display(); Person per2 = new Person();
per2.Display(); Person per3 = new Person("evan");
per3.Display(); Person per4 = new Person("evan", );
per4.Display(); Console.ReadLine();
}

这样的做法就是让一个接受参数最多的构造函数做"主构造函数", 且在主构造函数中实现必须的业务逻辑,其余的构造函数只要使用this关键字把传入的参数转发给主构造函数,并且提供必须的其它参数,这样子,我们整个类中需要我们操心的就是那个主构造函数了,其余构造函数基本上可以为空。

(注意:如果构造函数链中还有实现各自的逻辑,那么实际上是先执行主构造函数的代码,再执行各自逻辑),使用这种做法,真正的工作都交给了一个构造函数,类定义就会更简洁、更易维护、简化了编程任务。

最新文章

  1. angular js 的 ng-keyup 监听 keydown keyup事件获取 keyCode
  2. win8.1下golang+sdl2.0环境搭建
  3. C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别
  4. Android 操作SQLite基本用法
  5. C/C++ 笔试、面试题目大汇总(二)
  6. Activity界面切换动画特效。
  7. BZOJ 1079: [SCOI2008]着色方案 记忆化搜索
  8. Filter 配置多个URL-PATTERN
  9. viewpager+fragment学习笔记
  10. 超大批量删除redis中无用key+配置
  11. circularprogressbar/smoothprogressbar开源视图使用学习
  12. HTML 5终于定稿,八年后我们再一次谈谈怎么改变世界
  13. 简析Android 兼容性测试框架CTS使用
  14. Linq 实现sql中的not in和in条件查询
  15. JAVA入门--目录
  16. sweetalert提示框
  17. node使用ftp模块获取文件夹信息,中文乱码问题
  18. Android-Java-接口Interface
  19. mysql 授权命令
  20. JAVA语言 第六周

热门文章

  1. Ural 1635 Mnemonics and Palindromes(DP)
  2. Linux epoll 源码注释
  3. UIProgress控件的属性和方法
  4. leetcode 681. Next Closest Time
  5. YTU 2417: C语言习题 字符串长度
  6. [推荐]Silverlight 2 开发者海报
  7. 西交校赛 I. GZP and CS(数位dp)
  8. Linux 开机引导和启动过程详解
  9. @font-face 用fontsquirrel把ttf文件获取别的文件格式
  10. 压缩&&解压