建構函式詳解

funnyok發表於2021-09-09

什麼是建構函式,建構函式是我們使用new關鍵字例項化物件時呼叫執行該物件的建構函式。

建構函式大類分為無參建構函式和有參建構函式,其次是靜態和非靜態建構函式

 1  public class Test
 2     {
 3         int i;
 4         private char p1;
 5         private char p2;
 6 
 7         static Test()
 8         {
 9 
10         }
11         public Test()
12         {
13             i = 1;
14             Console.WriteLine("I am Test 預設建構函式 i={0}", i);
15         }
16         public Test(string str)
17         {
18             //i = 1;
19             Console.WriteLine("I am Test 預設建構函式 i={0}", str);
20         }
21         public Test(string str, string dt)
22         {
23             Console.WriteLine("I am Test 預設建構函式 i={0}", str);
24             Console.WriteLine("I am Test 預設建構函式 i={0}", dt);
25         }
26 
27         public Test(char p1, char p2)
28         {
29             // TODO: Complete member initialization
30             this.p1 = p1;
31             this.p2 = p2;
32             Console.WriteLine("I am Test 預設建構函式 i={0}", p1);
33             Console.WriteLine("I am Test 預設建構函式 i={0}", p2);
34         }
35     }
36     public class ProgramTest
37     {
38         static void Main(string[] args)
39         {
40             Test t = new Test('3', '2');
41             Console.Read();
42         }
View Code

一個類中可以自定義多個建構函式

其中靜態建構函式特殊:

靜態建構函式一個類中只能定義一個,而且最多隻能執行一次(因為靜態在程式執行時預設就自動建立開闢空間,不需要我們去new他們,也就是例項化

當類中的靜態成員有初始值時,沒有宣告靜態建構函式,那麼編譯器會自動生成預設的靜態建構函式。

靜態建構函式不可以被繼承

非靜態建構函式:

當有多個建構函式時,在例項化的時候根據你提供的引數編譯器決定呼叫哪一個建構函式

當建構函式是私有的private時  有且只有一個建構函式時   類不能例項化

相關文章