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

C#構造函數的運用淺析

開發 后端
C#構造函數的運用是什么樣子的呢?C#構造函數的運用具體的效果是什么呢?那么本文就向你介紹這方面的內容。

C#構造函數的名字不能隨便起,必須讓編譯器認得出才可以被自動執行。它的命名方法既簡單又合理:讓C#構造函數與類同名。除了名字外,C#構造函數的另一個特別之處是沒有返回值類型,這與返回值類型為void的函數不同。如果它有返回值類型,那么編譯器將不知所措。在你可以訪問一個類的方法、屬性或任何其它東西之前, ***條執行的語句是包含有相應類的C#構造函數。甚至你自己不寫一個C#構造函數,也會有一個缺省C#構造函數提供給你。

  1. class TestClass  
  2. {  
  3.  public TestClass(): base() {} // 由CLR提供  
  4. }  

下面列舉了幾種類型的C#構造函數

1)缺省C#構造函數

  1. class TestClass  
  2. {  
  3.  public TestClass(): base() {}   
  4. }  

上面已介紹,它由系統(CLR)提供。

2)實例C#構造函數

實例C#構造函數是實現對類中實例進行初始化的方法成員。如:

  1. using System;  
  2. class Point  
  3. {  
  4.  public double x, y;  
  5.  public Point()   
  6.  {  
  7. this.x = 0;  
  8. this.y = 0;  
  9.  }  
  10.  
  11.  public Point(double x, double y)  
  12.  {  
  13. this.x = x;  
  14. this.y = y;  
  15.  }  
  16.  …  
  17. }  
  18.  
  19. class Test  
  20. {  
  21.  static void Main()   
  22.  {  
  23. Point a = new Point();  
  24. Point b = new Point(3, 4); // 用C#構造函數初始化對象  
  25. …  
  26.  }  
  27. }  

聲明了一個類Point,它提供了兩個C#構造函數。它們是重載的。一個是沒有參數的PointC#構造函數和一個是有兩個double參數的PointC#構造函數。如果類中沒有提供這些C#構造函數,那么會CLR會自動提供一個缺省C#構造函數的。但一旦類中提供了自定義的C#構造函數,如Point()和Point(double x, double y),則缺省C#構造函數將不會被提供,這一點要注意。

3) 靜態C#構造函數

靜態C#構造函數是實現對一個類進行初始化的方法成員。它一般用于對靜態數據的初始化。靜態C#構造函數不能有參數,不能有修飾符而且不能被調用,當類被加載時,類的靜態C#構造函數自動被調用。如:

  1. using System.Data;  
  2. class Employee  
  3. {  
  4.  private static DataSet ds;  
  5.  static Employee()  
  6.  {  
  7. ds = new DataSet(...);  
  8.  }  
  9.  ...  
  10. }  

聲明了一個有靜態C#構造函數的類Employee。注意靜態C#構造函數只能對靜態數據成員進行初始化,而不能對非靜態數據成員進行初始化。但是,非靜態C#構造函數既可以對靜態數據成員賦值,也可以對非靜態數據成員進行初始化。

如果類僅包含靜態成員,你可以創建一個private的C#構造函數:private TestClass() {…},但是private意味著從類的外面不可能訪問該C#構造函數。所以,它不能被調用,且沒有對象可以被該類定義實例化。

以上是幾種類型C#構造函數的簡單運用,下面將重點介紹一下在類的層次結構中(即繼承結構中)基類和派生類的C#構造函數的使用方式。派生類對象的初始化由基類和派生類共同完成:基類的成員由基類的C#構造函數初始化,派生類的成員由派生類的C#構造函數初始化。

當創建派生類的對象時,系統將會調用基類的C#構造函數和派生類的C#構造函數,構 造函數的執行次序是:先執行基類的C#構造函數,再執行派生類的C#構造函數。如果派生類又有對象成員,則,先執行基類的C#構造函數,再執行成員對象類的C#構造函數,***執行派生類的C#構造函數。

至于執行基類的什么C#構造函數,缺省情況下是執行基類的無參C#構造函數,如果要執行基類的有參C#構造函數,則必須在派生類C#構造函數的成員初始化表中指出。如:

  1. class A  
  2. private int x;  
  3.  public A( ) { x = 0; }  
  4.  public A( int i ) { x = i; }  
  5. };  
  6.  
  7. class B : A  
  8. private int y;  
  9.  public B( ) { y = 0; }  
  10.  public B( int i ) { y = i; }  
  11.  public B( int i, int j ):A(i) { y = j; }  
  12. };  
  13.  
  14. B b1 = new B();   
  15. //執行基類A的C#構造函數A(),再執行派生類的C#構造函數B()  
  16. B b2 = new B(1);   
  17. //執行基類A的C#構造函數A(),再執行派生類的C#構造函數B(int)  
  18. B b3 = new B(0,1);   
  19. //執行執行基類A的C#構造函數A(int) ,再執行派生類的   

C#構造函數B(int,int)

在這里C#構造函數的執行次序是一定要分析清楚的。另外,如果基類A中沒有提供無參C#構造函數public A( ) { x = 0; },則在派生類的所有C#構造函數成員初始化表中必須指出基類A的有參C#構造函數A(i),如下所示:

  1. class A  
  2. private int x;  
  3.  public A( int i ) { x = i; }  
  4. };  
  5.  
  6. class B : A  
  7. private int y;  
  8.  public B():A(i) { y = 0; }  
  9.  public B(int i):A(i) { y = i; }  
  10.  public B(int i, int j):A(i) { y = j; }  
  11. };   

C#構造函數的運用就向你介紹到這里,希望對你學習C#構造函數的運用有所幫助。

【編輯推薦】

  1. C#結構體變量學習淺談
  2. 解析C#結構體指針
  3. C#指針使用簡析
  4. C#結構學習的詳細介紹
  5. 關于C#結構的一些認識
責任編輯:仲衡 來源: 互聯網轉載
相關推薦

2009-07-31 15:44:02

C#靜態構造函數

2009-08-14 09:15:28

C#調用構造函數

2009-08-14 09:43:59

C#復制構造函數

2009-08-13 18:15:06

C#繼承構造函數

2009-08-14 09:58:09

C#復制構造函數

2009-08-13 18:02:11

C#靜態構造函數

2009-09-18 09:02:45

CLR Via C#

2009-08-13 17:30:30

C#構造函數

2009-08-13 13:42:54

C#構造函數

2009-08-14 09:50:46

C#復制構造函數

2009-08-13 18:36:36

C#繼承構造函數

2009-08-24 13:41:23

C# 泛型約束

2011-06-11 21:36:44

C#C++

2009-08-13 18:10:31

C#靜態構造函數

2009-11-17 09:07:55

靜態構造函數

2009-08-10 14:43:03

C#函數Convert

2009-07-31 16:00:30

C#函數重載

2009-07-31 14:03:21

C# Format函數

2010-01-27 17:16:52

C++構造函數

2009-07-31 14:15:38

C# 構造函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 综合中文字幕 | 激情国产视频 | 久久久精品国产 | 亚洲电影免费 | www狠狠爱com | 日韩另类视频 | av免费看在线| 午夜一级做a爰片久久毛片 精品综合 | 国产高清精品网站 | 国产美女自拍视频 | 午夜寂寞影院列表 | 国产伦精品一区二区三区照片91 | 日韩免费视频一区二区 | 欧美视频在线看 | 久久久久久国产精品久久 | 天天射网站 | 成人精品一区亚洲午夜久久久 | 午夜精品视频 | 久久精品99 | 亚洲视频中文字幕 | 香蕉大人久久国产成人av | aaaaaa大片免费看最大的 | 伦理午夜电影免费观看 | 国产精品视频久久 | 成人免费看黄网站在线观看 | a欧美| 国产午夜影院 | 国外激情av| 国产精品视频综合 | 欧美xxxx性xxxxx高清 | 欧美日韩三级在线观看 | 中文字幕一区二区视频 | 亚洲一区二区三区免费观看 | 国产成人精品a视频一区www | 中文字幕一区二区三区四区五区 | 亚洲人的av| 亚洲国产一区在线 | 中文字幕 在线观看 | 国产精品久久久久久久久免费软件 | 久久伦理中文字幕 | 免费观看一级特黄欧美大片 |