首页 > 代码库 > this关键字实现串联构造函数调用
this关键字实现串联构造函数调用
在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分封装成一个方法,但还有一种更为合理简单的方法,下面就通过this关键字来实现串联构造函数做一简单示例。
示例代码如下:
1 public class Person 2 { 3 public string personName; 4 //定义年龄为可空类型,这样就可以赋予其null值 5 public int? personAge; 6 7 //下面前三个构造函数都是去调用参数最多的第四个构造函数,只取它们所需要的部分参数即可 8 //这样的做法就是this串联构造函数 9 public Person():this("",0)10 {11 12 }13 14 public Person(string name):this("evan",null)15 {16 17 }18 19 public Person(int age):this("",20)20 { 21 22 }23 24 public Person(string name, int? age)25 {26 this.personName = name;27 //通过 ?? 判断传入的age是否null值28 //如果属于null值,则赋值10029 this.personAge = age ?? 100;30 }31 32 public void Display()33 {34 Console.WriteLine("Name:{0},Age:{1}\n", personName, personAge);35 } 36 }
主函数调用如下:
1 static void Main(string[] args) 2 { 3 Person per1 = new Person(); 4 per1.Display(); 5 6 Person per2 = new Person(20); 7 per2.Display(); 8 9 Person per3 = new Person("evan");10 per3.Display(); 11 12 Person per4 = new Person("evan", 20);13 per4.Display();14 15 Console.ReadLine(); 16 }
这样的做法就是让一个接受参数最多的构造函数做"主构造函数", 且在主构造函数中实现必须的业务逻辑,其余的构造函数只要使用this关键字把传入的参数转发给主构造函数,并且提供必须的其它参数,这样子,我们整个类中需要我们操心的就是那个主构造函数了,其余构造函数基本上可以为空。
(注意:如果构造函数链中还有实现各自的逻辑,那么实际上是先执行主构造函数的代码,再执行各自逻辑),使用这种做法,真正的工作都交给了一个构造函数,类定义就会更简洁、更易维护、简化了编程任务。
this关键字实现串联构造函数调用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。