提高C#编程水平的50个要点 之十四“用多个构造函数时,利用构造函数链”
来源:互联网 发布:鸡兔同笼用c语言编程 编辑:程序博客网 时间:2024/05/29 13:19
在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分封装成一个方法,但还有一种更为合理简单的方法,下面就通过构造函数链来实现串联构造函数的简单示例。
示例代码如下:
public class Person
{
public string personName;
//定义年龄为可空类型,这样就可以赋予其null值
public int personAge;
//下面前三个构造函数都是去调用参数最多的第四个构造函数,只取它们所需要的部分参数即可
//这样的做法就是this串联构造函数
public Person():this("",0)
{}
public Person(string name):this("evan",null)
{ }
public Person(int age):this("",20)
{ }
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(20);
per2.Display();
Person per3 = new Person("evan");
per3.Display();
Person per4 = new Person("evan", 20);
per4.Display();
Console.ReadLine();
}
这样的做法就是让一个接受参数最多的构造函数做"主构造函数", 且在主构造函数中实现必须的业务逻辑,其余的构造函数只要使用this关键字把传入的参数转发给主构造函数,并且提供必须的其它参数,这样子,我们整个类中需要我们操心的就是那个主构造函数了,其余构造函数基本上可以为空。
注意:如果构造函数链中还有实现各自的逻辑,那么实际上是先执行主构造函数的代码,再执行各自逻辑,使用这种做法,真正的工作都交给了一个构造函数,类定义就会更简洁、更易维护、简化了编程任务。
- 提高C#编程水平的50个要点 之十四“用多个构造函数时,利用构造函数链”
- 提高C#编程水平的50个要点 之十三“使用静态构造函数来初始化静态成员变量”
- C# 提高C#编程水平的50个要点
- [转]提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 程序员提高C#编程水平的50个要点[转]
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- 提高C#编程水平的50个要点
- Quartz中时间表达式详细介绍与样例分析
- ASCII码表_全_完整版
- Android动画效果translate、scale、alpha、rotate详解
- 【ORACLE】ORA-01034ORACLE not available
- Spark算子执行流程详解之二
- 提高C#编程水平的50个要点 之十四“用多个构造函数时,利用构造函数链”
- Unity协程(Coroutine)原理剖析(一)
- 数学——Div算子
- <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scal
- Windows远程桌面连接失败和无法复制粘贴
- Vue自定义指令
- Eclipse 调试笔记
- ubuntu 12.04 设置远程共享桌面
- 欢迎使用CSDN-markdown编辑器