成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#調用構造函數淺析

開發 后端
C#調用構造函數是如何執行的呢?C#調用構造函數具體的會怎么操作呢?那么本文就向你介紹相關內容。

C#調用構造函數是如何的呢?讓我們首先來看看什么是構造函數?

C#調用構造函數之構造函數定義:它是在創建給定類型的對象時執行的類方法。構造函數具有與類相同的名稱,它通常初始化新對象的數據成員。

在下面的示例中,定義了一個具有一個簡單的構造函數,名為 Taxi 的類。然后使用 new 運算符來實例化該類。在為新對象分配內存之后,new 運算符立即調用 Taxi 構造函數。

C#調用構造函數實例

  1. public class Taxi  
  2. {  
  3. public bool isInitialized;  
  4. public Taxi()  
  5. {  
  6. isInitialized = true;  
  7. }  
  8. }  
  9.  
  10. class TestTaxi  
  11. {  
  12. static void Main()  
  13. {  
  14. Taxi t = new Taxi();  
  15. System.Console.WriteLine(t.isInitialized);  
  16. }  

不帶參數的構造函數稱為“默認構造函數”。無論何時,只要使用 new 運算符實例化對象,并且不為 new 提供任何參數,就會調用默認構造函數。有關更多信息,請參見 實例構造函數。

除非類是 static 的,否則 C# 編譯器將為無構造函數的類提供一個公共的默認構造函數,以便該類可以實例化。有關更多信息,請參見 靜態類和靜態類成員。

通過將構造函數設置為私有構造函數,可以阻止類被實例化,如下所示:

C#調用構造函數實例

  1. class NLog  
  2. {  
  3. // Private Constructor:  
  4. private NLog() { }  
  5.  
  6. public static double e = System.Math.E;  //2.71828...  

有關更多信息,請參見 私有構造函數。

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

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

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

  1. int i;  
  2. Console.WriteLine(i); 

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

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

因此對值類型調用默認構造函數不是必需的。

類和 structs 都可以定義具有參數的構造函數。帶參數的構造函數必須通過 new 語句或 base 語句來調用。類和 structs 還可以定義多個構造函數,并且二者均不需要定義默認構造函數。例如:

C#調用構造函數實例

  1. public class Employee  
  2. {  
  3. public int salary;  
  4.  
  5. public Employee(int annualSalary)  
  6. {  
  7. salary = annualSalary;  
  8. }  
  9.  
  10. public Employee(int weeklySalary, int numberOfWeeks)  
  11. {  
  12. salary = weeklySalary * numberOfWeeks;  
  13. }  

此類可以使用下列語句中的任一個來創建:

C#調用構造函數實例

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

構造函數可以使用 base 關鍵字來調用基類的構造函數。例如:

C#調用構造函數實例

  1. public class Manager : Employee  
  2. {  
  3. public Manager(int annualSalary)  
  4. base(annualSalary)  
  5. {  
  6. //Add further instructions here.  
  7. }  

在此示例中,基類的構造函數在執行構造函數塊之前被調用。base 關鍵字可帶參數使用,也可不帶參數使用。構造函數的任何參數都可用作 base 的參數,或用作表達式的一部分。有關更多信息,請參見 base。

在派生類中,如果不使用 base 關鍵字來顯式調用基類構造函數,則將隱式調用默認構造函數(如果有的話)。這意味著下面的構造函數聲明在效果上是相同的:

C#調用構造函數實例

  1. public Manager(int initialdata)  
  2. {  
  3. //Add further instructions here.  
  4. }  
  5.  
  6. public Manager(int initialdata) : base()  
  7. {  
  8. //Add further instructions here.  

如果基類沒有提供默認構造函數,派生類必須使用 base 顯式調用基構造函數。

構造函數可以使用 this 關鍵字調用同一對象中的另一構造函數。和 base 一樣,this 可帶參數使用也可不帶參數使用,構造函數中的任何參數都可用作 this 的參數,或者用作表達式的一部分。例如,可以使用 this 重寫前一示例中的第二個構造函數:

  1. public Employee(int weeklySalary, int numberOfWeeks)  
  2. this(weeklySalary * numberOfWeeks)  
  3. {  

上面對 this 關鍵字的使用導致此構造函數被調用:

  1. public Employee(int annualSalary)  
  2. {  
  3. salary = annualSalary;  

構造函數可以標記為 public、 private、 protected、 internal 或 protectedinternal。這些訪問修飾符定義類的用戶構造該類的方式。有關更多信息,請參見 訪問修飾符。

使用 static 關鍵字可以將構造函數聲明為靜態構造函數。在訪問任何靜態字段之前,都將自動調用靜態構造函數,它們通常用于初始化靜態類成員。有關更多信息,請參見 靜態構造函數。

C#調用構造函數的相關內容就向你介紹到這里,希望對你學習和了解C#調用構造函數有所幫助。

【編輯推薦】

  1. 學習C#構造函數的一點體會
  2. C#靜態構造函數特點淺析
  3. C#靜態構造函數學習心得淺析
  4. C#繼承構造函數實現淺析
  5. C#繼承與構造函數的調用實例演示
責任編輯:仲衡 來源: MSDN
相關推薦

2009-08-13 18:36:36

C#繼承構造函數

2009-07-31 15:44:02

C#靜態構造函數

2009-08-13 17:38:42

C#構造函數

2009-08-13 18:15:06

C#繼承構造函數

2009-09-18 09:02:45

CLR Via C#

2009-08-13 18:02:11

C#靜態構造函數

2009-08-14 09:43:59

C#復制構造函數

2009-08-14 09:58:09

C#復制構造函數

2009-08-13 13:42:54

C#構造函數

2009-08-13 17:30:30

C#構造函數

2009-08-04 09:30:33

C#調用ImageAn

2009-08-14 09:50:46

C#復制構造函數

2009-08-13 18:10:31

C#靜態構造函數

2009-08-10 14:43:03

C#函數Convert

2009-07-31 16:00:30

C#函數重載

2009-07-31 14:03:21

C# Format函數

2009-08-24 13:41:23

C# 泛型約束

2009-07-31 14:15:38

C# 構造函數

2009-08-24 18:09:13

C#構造函數

2009-07-31 17:28:35

C#語言調用DLL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av在线播放网址 | 国产精品一区二区三区在线 | 91中文字幕在线 | 国产在线观看一区二区 | 亚洲欧美日本国产 | 99免费在线观看 | 97视频人人澡人人爽 | 婷婷免费视频 | 欧美久久久久久久久中文字幕 | 欧美视频在线观看 | 久久久久电影 | 男人的天堂中文字幕 | 国产精品欧美精品 | 亚洲精品乱码久久久久久按摩观 | 91久久国产综合久久 | 国产精品有限公司 | 精品亚洲国产成av人片传媒 | 欧美在线一区二区三区 | 91精品国产综合久久婷婷香蕉 | 欧美黄色网 | 精品毛片 | 久久久久久高潮国产精品视 | 欧美色综合天天久久综合精品 | 成人av网站在线观看 | 99亚洲视频| 久久久久久色 | 久久福利电影 | 国产精品久久久久久久久久久久 | 成人欧美一区二区三区在线观看 | 在线免费av电影 | 天天综合91 | 波多野结衣一二三区 | 综合网在线 | 久久久视频在线 | 亚洲欧美在线观看 | 久久婷婷香蕉热狠狠综合 | 婷婷久久精品一区二区 | 日日想夜夜操 | 日韩在线观看网站 | 福利视频网站 | 日韩视频国产 |