C#使用this關鍵字實現(xiàn)串聯(lián)構造函數(shù)調(diào)用方法
本文實例講述了C#使用this關鍵字實現(xiàn)串聯(lián)構造函數(shù)調(diào)用方法。分享給大家供大家參考。具體分析如下:
在一個類中如果需要實現(xiàn)多個自定義構造函數(shù),通常做法是在構造函數(shù)中實現(xiàn)各自的業(yè)務邏輯,如果這些業(yè)務邏輯的實現(xiàn)并非截然不同的話,顯然不符合oop編程思想,極不利于維護,當然,我們也可以通過將相同的邏輯部分封裝成一個方法,但還有一種更為合理簡單的方法,下面就通過this關鍵字來實現(xiàn)串聯(lián)構造函數(shù)做一簡單示例。
示例代碼如下:
public class Person
{
public string personName;
//定義年齡為可空類型,這樣就可以賦予其null值
public int? personAge;
//下面前三個構造函數(shù)都是去調(diào)用參數(shù)最多的第四個構造函數(shù),只取它們所需要的部分參數(shù)即可
//這樣的做法就是this串聯(lián)構造函數(shù)
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 ?? 100;
}
public void Display()
{
Console.WriteLine("Name:{0},Age:{1}\n", personName, personAge);
}
}
主函數(shù)調(diào)用如下:
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();
}
這樣的做法就是讓一個接受參數(shù)最多的構造函數(shù)做"主構造函數(shù)", 且在主構造函數(shù)中實現(xiàn)必須的業(yè)務邏輯,其余的構造函數(shù)只要使用this關鍵字把傳入的參數(shù)轉發(fā)給主構造函數(shù),并且提供必須的其它參數(shù),這樣子,我們整個類中需要我們操心的就是那個主構造函數(shù)了,其余構造函數(shù)基本上可以為空。
注意:如果構造函數(shù)鏈中還有實現(xiàn)各自的邏輯,那么實際上是先執(zhí)行主構造函數(shù)的代碼,再執(zhí)行各自邏輯,使用這種做法,真正的工作都交給了一個構造函數(shù),類定義就會更簡潔、更易維護、簡化了編程任務。
希望本文所述對大家的C#程序設計有所幫助。
相關文章
C#基于QRCode實現(xiàn)動態(tài)生成自定義二維碼圖片功能示例
這篇文章主要介紹了C#基于QRCode實現(xiàn)動態(tài)生成自定義二維碼圖片功能,結合實例形式分析了C#使用QRCode動態(tài)生成二維碼圖片相關操作技巧,需要的朋友可以參考下2019-02-02C#在運行時動態(tài)創(chuàng)建類型的實現(xiàn)方法
這篇文章主要介紹了C#在運行時動態(tài)創(chuàng)建類型的實現(xiàn)方法,主要通過動態(tài)生成C#代碼再編譯成程序集來實現(xiàn)動態(tài)創(chuàng)建類型的,需要的朋友可以參考下2014-09-09C#?將數(shù)據(jù)庫SqlServer數(shù)據(jù)綁定到類中的過程詳解
本文講述的是讀取數(shù)據(jù)庫中數(shù)據(jù)的常用做法,即將數(shù)據(jù)庫中的數(shù)據(jù)綁定到創(chuàng)建的類中,再將類綁定到DataGridView的數(shù)據(jù)源中的做法,對C#將SqlServer數(shù)據(jù)綁定到類中感興趣的朋友一起看看吧2022-06-06