C 建構函式

2021-10-20 21:14:33 字數 2873 閱讀 4105

目錄:

一、建構函式的定義

二、建構函式時的注意事項

三、建構函式與一般函式的區別

四、建構函式的作用

五、例項建構函式

六、靜態建構函式

七、私有建構函式

一、建構函式的定義

c#中建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。不帶引數的建構函式稱為「預設建構函式」。 無論什麼時候,只要使用new運算子例項化物件,並且不為 new 提供任何引數,就會呼叫預設建構函式。除非類是靜態的,否則c#編譯器將為無建構函式的類提供乙個公共的預設建構函式,以便該類可以例項化。預設建構函式:public 類名(){}

建構函式可分為:例項建構函式,靜態建構函式,私有建構函式(下面會詳細介紹)

二、建構函式時的注意事項

建構函式沒有返回值(void也不需要)

乙個類中可以有多個建構函式,可根據其引數個數,引數順序,引數型別的不同來區分它們,這稱作建構函式的過載

建構函式的命名必須和類名相同

呼叫子類的建構函式時會先呼叫父類的無參建構函式

通常使用建構函式來進行類中字段的賦初值

建構函式不能直接被呼叫,必須通過關鍵字new在建立物件時自動呼叫

當乙個類沒有定義任何建構函式時,c#編譯器會自動為其生成乙個預設的隱式無參建構函式

如果乙個類中定義了有參建構函式,例項化時需要呼叫無參建構函式,這時我們就必須定義乙個顯式無引數建構函式,否則執行會報錯

三、建構函式與一般函式的區別

1.宣告方式不同

建構函式:

[訪問修飾符] 類名(引數列表)

一般函式:

[訪問修飾符] 返回型別 方法名(引數列表)

2.呼叫方式不同

建構函式:在類例項化時呼叫

一般函式:在類例項化後,必須手動呼叫

四、建構函式的作用

當需要給乙個類中的字段進行初始化時,第一種:例項化後手動給屬性賦值;第二種例項化時直接把引數放進去自動給屬性賦值,顯然第二種簡單省事。下來我們一起看看兩種方法:

第一種:

class program

-姓名-性別:-成績");

console.readline();}}

class student

public string name

public string ***

public double score

}第二種:

class program

-姓名-性別:-成績",stu.id,stu.name,stu.***,stu.score);

console.readline();}}

class student

public string name

public string ***

public double score

//無參建構函式

public student()

//有參建構函式

public student(int id,string name,string ***,double score)

}五、例項建構函式

建構函式的名字與類名相同

使用new表示式建立類的物件時,會呼叫其建構函式。並且通常初始化新物件的資料成員。

除非類是靜態的,否則會為沒有建構函式的類,自動生成乙個預設建構函式,並使用預設值來初始化物件字段。

建構函式可以有引數,可以以引數個數、引數型別、引數順序不同的形式存在多個建構函式。

class program

---y=");//結果為:x=0---y=0

console.writeline($"x=---y=");//結果為:x=10---y=20

console.readline();}}

class student

public string y

//無參建構函式

public student()

//有兩個引數建構函式

public student(int x, string y)

}六、靜態建構函式

靜態建構函式不使用訪問修飾符或不具有引數。

在建立第乙個例項或引用任何靜態成員之前,將自動呼叫靜態建構函式以初始化類。

不能直接呼叫靜態建構函式。

無法控制在程式中執行靜態建構函式的時間。

靜態建構函式的一種典型用法是在類使用日誌檔案且將建構函式用於將條目寫入到此檔案中時使用。

靜態建構函式對於建立非託管**的包裝類也非常有用,這種情況下建構函式可呼叫 loadlibrary 方法。

如果靜態建構函式引發異常,執行時將不會再次呼叫該函式,並且型別在程式執行所在的應用程式域的生存期內將保持未初始化。

class program

//靜態建構函式

static program()

//第一步,程式入口main最先執行,然後執行靜態變數public static int x = 0

static void main(string args)

}呼叫類的靜態函式時的執行順序:

靜態變數==>靜態建構函式==>例項建構函式

靜態變數==>靜態建構函式==>靜態函式

那麼呼叫類的例項函式時的執行順序則是:

非靜態變數==>例項建構函式==>例項函式

七、私有建構函式

私有建構函式是一種特殊的例項建構函式。 它通常只在包含靜態成員的類中。 如果類具有乙個或多個私有建構函式而沒有公共建構函式,則在其他類(除巢狀類外)中無法進行例項化。

class program

static void main(string args)

");//執行結果:i=9

console.readline();}}

class person

C 建構函式 拷貝建構函式

建構函式 class base private int m var 建構函式無返回值型別,函式名和型別相同。拷貝建構函式傳遞引數為引用。1 class base2 7 拷貝建構函式 8 base base ref m var ref m var 9 11 private 12 intm var 13...

C 構造器(建構函式)

定義和作用 構造器是在構建類的 引用時 自動執行的方法。所以,每個類都必須至少要有乙個構造器。在訪問乙個類的時候,編譯器最先執行構造器中的 它與類同名,帶引數的構造器能夠獲取引數,但是與方法不同的是 構造器雖然也是一種 例項型別 即必須通過例項來進行呼叫,也可以稱之為引用型別 但是卻不能返回任何值 ...

C 建構函式

建構函式是一種特殊的成員函式,它主要用於為物件分配儲存空間,對資料成員進行初始化.1 建構函式的名字必須與類同名 2 建構函式沒有返回型別,它可以帶引數,也可以不帶引數 3 建構函式的主要作用是完成對類的初始化工作 4 在建立乙個類的新物件 使用new關鍵字 時,系統回自動呼叫給類的建構函式初始化新...