国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

this關鍵字實現串聯構造函數調用

2019-11-17 02:36:30
字體:
來源:轉載
供稿:網友

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關鍵字把傳入的參數轉發給主構造函數,并且提供必須的其它參數,這樣子,我們整個類中需要我們操心的就是那個主構造函數了,其余構造函數基本上可以為空。

(注意:如果構造函數鏈中還有實現各自的邏輯,那么實際上是先執行主構造函數的代碼,再執行各自邏輯),使用這種做法,真正的工作都交給了一個構造函數,類定義就會更簡潔、更易維護、簡化了編程任務。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榆林市| 泰州市| 宜城市| 曲靖市| 常宁市| 乌拉特中旗| 汨罗市| 罗山县| 高尔夫| 吉木萨尔县| 石嘴山市| 本溪市| 汕头市| 黔江区| 泰州市| 密山市| 长寿区| 平遥县| 木里| 陈巴尔虎旗| 将乐县| 广汉市| 盖州市| 西藏| 广丰县| 江孜县| 嘉鱼县| 绵阳市| 阿克苏市| 衢州市| 酒泉市| 九寨沟县| 鸡西市| 张掖市| 临夏县| 阿克苏市| 古交市| 利津县| 阿鲁科尔沁旗| 屏南县| 平谷区|