C#構造函數的特性及使用詳解
C#構造函數的特性及使用情況是如何的呢?下面我們分兩個部分來向你講解:
C#構造函數的特性一、
什么是C#構造函數?Construct,Function
C#構造函數是一種特殊的成員函數,它主要用于為對象分配存儲空間,對數據成員進行初始化.
C#構造函數具有一些特殊的性質:
(1)C#構造函數的名字必須與類同名;
(2)C#構造函數沒有返回類型,它可以帶參數,也可以不帶參數;
(3)聲明類對象時,系統自動調用構造函數,構造函數不能被顯式調用;
(4)C#構造函數可以重載,從而提供初始化類對象的不同方法;
(5)若在聲明時未定義構造函數,系統會自動生成默認的構造函數,此時構造函數的函數體為空.
(6)靜態構造函數,用static修飾,用于初始化靜態變量,一個類只允許有一個構造函數,在類實例化時加載,這時修飾符public、private失去作用.
(7)可以使用public、protected、private修飾符。.
(8)引用父類構造時用():base()方法,引用自身重載的構造使用():this(int para).
(7)可以使用public、protected、private修飾符。
C#構造函數的特性之C#構造函數使用時注意事項:
1、定義了一個帶參構造函數后,最好定義一個無參構造函數,這樣可以避免子類調用時出錯
2、調用基類構造函數:base() 或 :base(參數列表) 調用本類其它構造函數 :this() 或 :this(參數列表)
3、只有在用base顯示調用父類的構造函數時,程序才不會默認的調用不帶參數的構造函數。
C#構造函數的特性二、
C#構造函數的結構層次關系或者說執行順序是怎樣的?Layer,Transfer,Execute
從基類開始構造對象。
- public class MyBaseClass
- {
- public MyBaseClass()
- {
- Console.WriteLine("In MyBaseClass()");
- }
- public MyBaseClass(int i)
- {
- Console.WriteLine("In MyBaseClass(int i)");
- }
- }
- public class MyDerivedClass : MyBaseClass
- {
- public MyDerivedClass()
- {
- Console.WriteLine("In MyDerivedClass()");
- }
- public MyDerivedClass(int i)
- {
- Console.WriteLine("In MyDerivedClass(int i)");
- }
- //public MyDerivedClass(int i, int j)
- //{
- //Console.WriteLine("In MyDerivedClass(int i,int j)");
- //}
- public MyDerivedClass(int i, int j)
- : base(i)
- {
- Console.WriteLine("In MyDerivedClass(int i,int j):base(i)");
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- //Event1
- MyDerivedClass myObj1 = new MyDerivedClass();
- Console.WriteLine();
- //Event2
- MyDerivedClass myObj2 = new MyDerivedClass(4);
- Console.WriteLine();
- //Event3
- MyDerivedClass myObj3 = new MyDerivedClass(4,8);
- Console.WriteLine();
- Console.ReadKey();
- }
- }
C#構造函數執行程序輸出:
- In MyBaseClass()
- In MyDerivedClass()
- In MyBaseClass()
- In MyDerivedClass(int i)
- In MyBaseClass(int i)
- In MyDerivedClass(int i,int j):base(i)
很明顯,只有在用base顯示調用父類的構造函數時,程序才不會默認的調用不帶參數的構造函數。
C#構造函數的特性及使用就向你介紹到這里,希望對你理解和使用C#構造函數的特性有所幫助。
【編輯推薦】