C#使用this關(guān)鍵字實(shí)現(xiàn)串聯(lián)構(gòu)造函數(shù)調(diào)用方法
本文實(shí)例講述了C#使用this關(guān)鍵字實(shí)現(xiàn)串聯(lián)構(gòu)造函數(shù)調(diào)用方法。分享給大家供大家參考。具體分析如下:
在一個(gè)類中如果需要實(shí)現(xiàn)多個(gè)自定義構(gòu)造函數(shù),通常做法是在構(gòu)造函數(shù)中實(shí)現(xiàn)各自的業(yè)務(wù)邏輯,如果這些業(yè)務(wù)邏輯的實(shí)現(xiàn)并非截然不同的話,顯然不符合oop編程思想,極不利于維護(hù),當(dāng)然,我們也可以通過將相同的邏輯部分封裝成一個(gè)方法,但還有一種更為合理簡單的方法,下面就通過this關(guān)鍵字來實(shí)現(xiàn)串聯(lián)構(gòu)造函數(shù)做一簡單示例。
示例代碼如下:
public class Person
{
public string personName;
//定義年齡為可空類型,這樣就可以賦予其null值
public int? personAge;
//下面前三個(gè)構(gòu)造函數(shù)都是去調(diào)用參數(shù)最多的第四個(gè)構(gòu)造函數(shù),只取它們所需要的部分參數(shù)即可
//這樣的做法就是this串聯(lián)構(gòu)造函數(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();
}
這樣的做法就是讓一個(gè)接受參數(shù)最多的構(gòu)造函數(shù)做"主構(gòu)造函數(shù)", 且在主構(gòu)造函數(shù)中實(shí)現(xiàn)必須的業(yè)務(wù)邏輯,其余的構(gòu)造函數(shù)只要使用this關(guān)鍵字把傳入的參數(shù)轉(zhuǎn)發(fā)給主構(gòu)造函數(shù),并且提供必須的其它參數(shù),這樣子,我們整個(gè)類中需要我們操心的就是那個(gè)主構(gòu)造函數(shù)了,其余構(gòu)造函數(shù)基本上可以為空。
注意:如果構(gòu)造函數(shù)鏈中還有實(shí)現(xiàn)各自的邏輯,那么實(shí)際上是先執(zhí)行主構(gòu)造函數(shù)的代碼,再執(zhí)行各自邏輯,使用這種做法,真正的工作都交給了一個(gè)構(gòu)造函數(shù),類定義就會(huì)更簡潔、更易維護(hù)、簡化了編程任務(wù)。
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
在C#中List集合使用First()方法獲取第一個(gè)元素的操作
這篇文章主要介紹了在C#中List集合使用First()方法獲取第一個(gè)元素的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
C#控件picturebox實(shí)現(xiàn)畫圖功能
這篇文章主要為大家詳細(xì)介紹了C#控件picturebox實(shí)現(xiàn)畫圖功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
c# 網(wǎng)址壓縮簡單實(shí)現(xiàn)短網(wǎng)址
短網(wǎng)址,忽然一下子就冒出來的東西,長長的一個(gè)URL,提交過去,出來就只有短短的一個(gè)URL了,看起來似乎挺神奇,其實(shí)簡單分析一下,明白其中的原理,也是一件很簡單的事情,需要的朋友可以了解下2012-12-12
C#使用iCSharpcode進(jìn)行文件壓縮實(shí)現(xiàn)方法
這篇文章主要介紹了C#使用iCSharpcode進(jìn)行文件壓縮實(shí)現(xiàn)方法,末尾附有完整實(shí)例,有助于大家參考借鑒,需要的朋友可以參考下2014-08-08
C#測(cè)量程序運(yùn)行時(shí)間及cpu使用時(shí)間實(shí)例方法
對(duì)一個(gè)服務(wù)器程序想統(tǒng)計(jì)每秒可以處理多少數(shù)據(jù)包,要如何做?答案是用處理數(shù)據(jù)包的總數(shù),除以累記處理數(shù)據(jù)包用的時(shí)間,下面我們看一個(gè)代碼實(shí)例就明白了2013-11-11
C#實(shí)現(xiàn)程序開機(jī)啟動(dòng)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)程序開機(jī)啟動(dòng)的方法,涉及C#針對(duì)應(yīng)用程序及注冊(cè)表的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06

