C#中怎么調(diào)用構(gòu)造函數(shù)

這篇文章給大家介紹C#中怎么調(diào)用構(gòu)造函數(shù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)鄠邑,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

C#調(diào)用構(gòu)造函數(shù)是如何的呢?讓我們首先來看看什么是構(gòu)造函數(shù)?

C#調(diào)用構(gòu)造函數(shù)之構(gòu)造函數(shù)定義:它是在創(chuàng)建給定類型的對象時執(zhí)行的類方法。構(gòu)造函數(shù)具有與類相同的名稱,它通常初始化新對象的數(shù)據(jù)成員。

在下面的示例中,定義了一個具有一個簡單的構(gòu)造函數(shù),名為 Taxi 的類。然后使用 new 運算符來實例化該類。在為新對象分配內(nèi)存之后,new 運算符立即調(diào)用 Taxi 構(gòu)造函數(shù)。

C#調(diào)用構(gòu)造函數(shù)實例

public class Taxi  {  public bool isInitialized;  public Taxi()  {  isInitialized = true;  }  }   class TestTaxi  {  static void Main()  {  Taxi t = new Taxi();  System.Console.WriteLine(t.isInitialized);  }  }

不帶參數(shù)的構(gòu)造函數(shù)稱為“默認(rèn)構(gòu)造函數(shù)”。無論何時,只要使用 new 運算符實例化對象,并且不為 new 提供任何參數(shù),就會調(diào)用默認(rèn)構(gòu)造函數(shù)。有關(guān)更多信息,請參見 實例構(gòu)造函數(shù)。

除非類是 static 的,否則 C# 編譯器將為無構(gòu)造函數(shù)的類提供一個公共的默認(rèn)構(gòu)造函數(shù),以便該類可以實例化。有關(guān)更多信息,請參見 靜態(tài)類和靜態(tài)類成員。

通過將構(gòu)造函數(shù)設(shè)置為私有構(gòu)造函數(shù),可以阻止類被實例化,如下所示:

C#調(diào)用構(gòu)造函數(shù)實例

class NLog  {  // Private Constructor:  private NLog() { }   public static double e = System.Math.E;  //2.71828...  }

有關(guān)更多信息,請參見 私有構(gòu)造函數(shù)。

結(jié)構(gòu)類型的構(gòu)造函數(shù)與類的構(gòu)造函數(shù)類似,但是 structs 不能包含顯式默認(rèn)構(gòu)造函數(shù),因為編譯器將自動提供一個構(gòu)造函數(shù)。此構(gòu)造函數(shù)將結(jié)構(gòu)中的每個字段初始化為 默認(rèn)值表中顯示的默認(rèn)值。然而,只有當(dāng)結(jié)構(gòu)用 new 實例化時,才會調(diào)用此默認(rèn)構(gòu)造函數(shù)。例如,下面的代碼使用 Int32 的默認(rèn)構(gòu)造函數(shù),因此您可以確信整數(shù)已初始化:

int i = new int();  Console.WriteLine(i);

然而,下面的代碼卻導(dǎo)致了 編譯器錯誤 CS0165,因為它沒有使用 new,而且試圖使用尚未初始化的對象:

int i;  Console.WriteLine(i);

基于 structs 的對象可以初始化或賦值后使用,如下所示:

int a = 44;  // Initialize the value type...  int b;  b = 33;  // Or assign it before using it.  Console.WriteLine("{0}, {1}", a, b);

因此對值類型調(diào)用默認(rèn)構(gòu)造函數(shù)不是必需的。

類和 structs 都可以定義具有參數(shù)的構(gòu)造函數(shù)。帶參數(shù)的構(gòu)造函數(shù)必須通過 new 語句或 base 語句來調(diào)用。類和 structs 還可以定義多個構(gòu)造函數(shù),并且二者均不需要定義默認(rèn)構(gòu)造函數(shù)。例如:

C#調(diào)用構(gòu)造函數(shù)實例

public class Employee  {  public int salary;   public Employee(int annualSalary)  {  salary = annualSalary;  }   public Employee(int weeklySalary, int numberOfWeeks)  {  salary = weeklySalary * numberOfWeeks;  }  }

此類可以使用下列語句中的任一個來創(chuàng)建:

C#調(diào)用構(gòu)造函數(shù)實例

Employee e1 = new Employee(30000);  Employee e2 = new Employee(500, 52);

構(gòu)造函數(shù)可以使用 base 關(guān)鍵字來調(diào)用基類的構(gòu)造函數(shù)。例如:

C#調(diào)用構(gòu)造函數(shù)實例

public class Manager : Employee  {  public Manager(int annualSalary)  : base(annualSalary)  {  //Add further instructions here.  }  }

在此示例中,基類的構(gòu)造函數(shù)在執(zhí)行構(gòu)造函數(shù)塊之前被調(diào)用。base 關(guān)鍵字可帶參數(shù)使用,也可不帶參數(shù)使用。構(gòu)造函數(shù)的任何參數(shù)都可用作 base 的參數(shù),或用作表達(dá)式的一部分。有關(guān)更多信息,請參見 base。

在派生類中,如果不使用 base 關(guān)鍵字來顯式調(diào)用基類構(gòu)造函數(shù),則將隱式調(diào)用默認(rèn)構(gòu)造函數(shù)(如果有的話)。這意味著下面的構(gòu)造函數(shù)聲明在效果上是相同的:

C#調(diào)用構(gòu)造函數(shù)實例

public Manager(int initialdata)  {  //Add further instructions here.  }   public Manager(int initialdata) : base()  {  //Add further instructions here.  }

如果基類沒有提供默認(rèn)構(gòu)造函數(shù),派生類必須使用 base 顯式調(diào)用基構(gòu)造函數(shù)。

構(gòu)造函數(shù)可以使用 this 關(guān)鍵字調(diào)用同一對象中的另一構(gòu)造函數(shù)。和 base 一樣,this 可帶參數(shù)使用也可不帶參數(shù)使用,構(gòu)造函數(shù)中的任何參數(shù)都可用作 this 的參數(shù),或者用作表達(dá)式的一部分。例如,可以使用 this 重寫前一示例中的第二個構(gòu)造函數(shù):

public Employee(int weeklySalary, int numberOfWeeks)  : this(weeklySalary * numberOfWeeks)  {  }

上面對 this 關(guān)鍵字的使用導(dǎo)致此構(gòu)造函數(shù)被調(diào)用:

public Employee(int annualSalary)  {  salary = annualSalary;  }

構(gòu)造函數(shù)可以標(biāo)記為 public、 private、 protected、 internal 或 protectedinternal。這些訪問修飾符定義類的用戶構(gòu)造該類的方式。有關(guān)更多信息,請參見 訪問修飾符。

關(guān)于C#中怎么調(diào)用構(gòu)造函數(shù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

名稱欄目:C#中怎么調(diào)用構(gòu)造函數(shù)
文章起源:http://bm7419.com/article6/jdsiig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈網(wǎng)站制作、網(wǎng)站改版網(wǎng)站收錄、域名注冊、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)