zoukankan      html  css  js  c++  java
  • 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值,则赋值100
    29             this.personAge = age ?? 100;
    30         }
    31 
    32         public void Display()
    33         {
    34             Console.WriteLine("Name:{0},Age:{1}
    ", 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关键字把传入的参数转发给主构造函数,并且提供必须的其它参数,这样子,我们整个类中需要我们操心的就是那个主构造函数了,其余构造函数基本上可以为空。

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

  • 相关阅读:
    【转】【金蝶K3Cloud】 分页账表
    【转】【金蝶K3Cloud】 树形账表
    【金蝶K3Cloud】Python拼接字段
    性能分析及调优
    性能测试指南
    性能测试--测试指标
    性能测试--术语解释
    BurpSuite 安装使用
    BeEF 安装使用
    win10与vmware 中的kali linux 共享文件夹
  • 原文地址:https://www.cnblogs.com/0515offer/p/4253298.html
Copyright © 2011-2022 走看看