程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 菜鳥談談C#中的構造函數和析構函數

菜鳥談談C#中的構造函數和析構函數

編輯:C#入門知識

本節說明對象的創建、初始化和銷毀過程。本節介紹下列主題:

l         類構造函數

l         結構構造函數

l         析構函數

 

類構造函數

本節將討論三種類構造函數:

類構造函數的類型

注釋

實例

用於創建並初始化類的實例。

私有

在類之外不可訪問的特殊類型實例構造函數。無法用私有構造函數來實例化類。

靜態

在創建第一個實例或引用任何靜態成員之前,將自動調用這種構造函數來初始化類。無法直接調用這種構造函數。

備注

       (1) 實例構造函數

       創建新對象時將調用類構造函數,例如:

       Point myPoint = new Point();

       一個類可以有多個構造函數。例如,可以聲明一個不帶參數的構造函數(如 Point())和一個帶參數的構造函數(如 Point(int x, int y))。

       如果類沒有構造函數,將自動生成一個默認的無參數構造函數,並使用默認值初始化對象字段(例如,int 將初始化為 0)。

       類構造函數可通過base關鍵字來調用基類的構造函數,例如:

       public Cylinder(double radius, double height): base(radius, height)

       {

       }

       類構造函數也可通過關鍵字 this 調用同一個類的另一個構造函數,例如:

       public Point(): this(0,20)

       {

       }

       在前面的示例中,無參數構造函數 Point() 調用了另一個帶有兩個參數的構造函數,將默認位置初始化為 (0, 20)。

 

       (2)私有構造函數

       私有構造函數是一種特殊的實例構造函數。它通常用在只包含靜態成員的類中。如果類具有一個或多個私有構造函數而沒有公共構造函數,則不允許其他類(除了嵌套類)創建該類的實例。例如:

       class NLog

       {

            // Private Constructor:

            private NLog() {}  

            public static double e = 2.71828;

       }

       聲明空構造函數可阻止自動生成默認構造函數。注意,如果您不對構造函數使用訪問修飾符,則在默認情況下它仍為私有構造函數。但是,通常顯式地使用 private(私有)修飾符來清楚地表明該類不能被實例化。

 

       (3)靜態構造函數

       靜態構造函數用於初始化類。在創建第一個實例或引用任何靜態成員之前,將自動調用靜態構造函數來初始化類。

       靜態構造函數既沒有訪問修飾符,也沒有參數。

       在創建第一個實例或引用任何靜態成員之前(方法或字段),將自動調用靜態構造函數來初始化類。

       無法直接調用靜態構造函數。靜態構造函數也不能訪問非靜態成員,它只被調用一次

       在程序中,用戶無法控制何時執行靜態構造函數。

       靜態構造函數的典型用途是:當類使用日志文件時,將使用這種構造函數向日志文件中寫入項。

 

結構構造函數

       結構構造函數類似於類構造函數,只是存在以下差異:

n         結構不能包含顯式的無參數構造函數。結構成員將自動初始化為它們的默認值。

n         結構不能有以下形式的初始值設定項:base (argument-list)。

       結構可以聲明構造函數,但它們必須帶參數。聲明結構的默認(無參數)構造函數是錯誤的。結構成員不能有初始值設定項。總是提供默認構造函數以將結構成員初始化為它們的默認值。

       對於結構,不像類那樣存在繼承。一個結構不能從另一個結構或類繼承。結構不能有以下形式的初始值設定項:base (argument-list)。

 

析構函數

       析構函數用於銷毀類的實例。

       備注

              不能對結構使用析構函數。只能對類使用析構函數。

              一個類只能有一個析構函

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved