91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中怎么使用構造函數

發布時間:2021-06-21 19:00:44 來源:億速云 閱讀:325 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關C#中怎么使用構造函數,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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

class TestClass  {   public TestClass(): base() {} // 由CLR提供  }

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

1)缺省C#構造函數

class TestClass  {   public TestClass(): base() {}   }

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

2)實例C#構造函數

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

using System;  class Point  {   public double x, y;   public Point()    {  this.x = 0;  this.y = 0;   }    public Point(double x, double y)   {  this.x = x;  this.y = y;   }   …  }   class Test  {   static void Main()    {  Point a = new Point();  Point b = new Point(3, 4); // 用C#構造函數初始化對象  …   }  }

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

3) 靜態C#構造函數

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

using System.Data;  class Employee  {   private static DataSet ds;   static Employee()   {  ds = new DataSet(...);   }   ...  }

聲明了一個有靜態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#構造函數的成員初始化表中指出。如:

class A  { private int x;   public A( ) { x = 0; }   public A( int i ) { x = i; }  };   class B : A  { private int y;   public B( ) { y = 0; }   public B( int i ) { y = i; }   public B( int i, int j ):A(i) { y = j; }  };   B b1 = new B();   //執行基類A的C#構造函數A(),再執行派生類的C#構造函數B()  B b2 = new B(1);   //執行基類A的C#構造函數A(),再執行派生類的C#構造函數B(int)  B b3 = new B(0,1);   //執行執行基類A的C#構造函數A(int) ,再執行派生類的

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

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

class A  { private int x;   public A( int i ) { x = i; }  };   class B : A  { private int y;   public B():A(i) { y = 0; }   public B(int i):A(i) { y = i; }   public B(int i, int j):A(i) { y = j; }  };

以上就是C#中怎么使用構造函數,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安陆市| 洪泽县| 新源县| 铜陵市| 垫江县| 呼图壁县| 黑山县| 章丘市| 安徽省| 汝州市| 漠河县| 宜兰市| 湘乡市| 隆回县| 抚松县| 临潭县| 潢川县| 辽中县| 江孜县| 晋城| 沅江市| 合水县| 武义县| 攀枝花市| 汾西县| 福州市| 济阳县| 莲花县| 平湖市| 新余市| 铅山县| 淄博市| 九江县| 尚志市| 定兴县| 阿克| 美姑县| 平南县| 绥芬河市| 临汾市| 驻马店市|