怎麼樣辨別建構函式?什麼是建構函式

2025-01-28 00:55:20 字數 4434 閱讀 8547

1樓:丁筱默

c#建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。不帶引數的建構函式稱為「預設建構函式」。

無論何時,只要使用 new 運算子例項化物件,並且不為 new 提供任何引數,就會呼叫預設建構函式。除非類是 static 的,否則 c# 編譯器將為無建構函式的類提供乙個公共的預設建構函式,以便該類可以例項化。

建構函式必須是在類裡的一級宣告,並且命名為類名,形式為:修飾符 類名(引數型別1,引數名1,。。

例如。class a

public int x, y;

public string s;

預設建構函式。

public a()

x = 0;

y = 0;

帶引數的建構函式。

public a(string a)

一般函式的宣告則不受這些約束。

只要定義在名稱空間內,命名形式為:修飾符 返回值型別 函式名(引數型別1,引數名1,。。

例如:private static void main(string args)

宣告瞭乙個私有的靜態主函式,無返回值,引數為args,string型別。

2樓:網友

函式無返回值,函式名與類名相同。

解構函式與建構函式有什麼區別?

3樓:惠企百科

1、概念不同:

解構函式:物件所在的函式已呼叫完畢時,系統自動執行解構函式。

建構函式:是一種特殊的方法。特別的乙個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。

2、作用不同:

解構函式:解構函式被呼叫。

建構函式:為物件成員變數賦初始值。

3、目的不同:

解構函式:」清理善後」 的工作。

建構函式:主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。

什麼是建構函式

4樓:鏡浠月

建構函式(constructor)是一種特殊的方法 。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中 。特別的乙個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。

建構函式的功能主要用於在類的物件建立時定義初始化的狀態。

5樓:網友

類物件例項化前先要呼叫類成員函式。1,函式特徵:函式名和類名相同;2,函式沒有返回值;3,函式可以過載;建構函式的作用一般是初始化一些類成員變數。

如果沒有自己定義的建構函式,那系統會自動呼叫無引數的default建構函式,此函式什麼也不做。

另外解構函式是不可以過載的。

6樓:殺鬼

類物件被建立的時候自動執行的函式,

7樓:雲澹楓卿

簡單地說建構函式是類函式,函式名與類名完全相同,無返回值建構函式屬於類的成員函式,除了具有一般成員函式的特點外,還具有自己的特點:

1)是類的乙個特殊的成員函式,函式名與類名相同;

2)訪問屬性應該是public;

3)功能是初始化物件,在建構函式中一般不作初始化以外的事情;

4)可以在類內定義,也可在類外定義;

5)無函式返回型別,注意:什麼也不寫,也不可寫為void;

6)程式執行時,當物件被建立後,該物件所屬的類的建構函式自動被呼叫,在該物件生存期中也只呼叫這一次;

7)可以過載。

建構函式作用是什麼

8樓:網友

這個問題這麼長時間沒有合適的回答麼?要搞清這個問題,首先要清楚建構函式的意義:建構函式並不是為了「初始化類」,至少不完全是。

不然它就會改叫「initializer」而不是「constructor」。構造的內涵比初始化要豐富。儘管大多數情況下,我們對類的構造內容限於給它的屬性賦值,但這僅僅是對簡單的使用場景。

對於複雜的設計模式,建構函式還要完成其他任務,從抽象的類去「建設」乙個功能化的例項。比如依賴注入,最流行的模式就是使用建構函式。

假設你的類要使用乙個服務,這個服務的作用是在類的方法工作時記錄一些日誌。但是日誌的記錄有可能會寫在文字檔案中、資料庫中或直接列印在螢幕上。但是我們知道solid設計原則要求我們的類不應該知道這些細節,我們只要在需要呼叫日誌功能的時候使用類似之類的方法。

那麼這個ilog服務怎麼「來到」我們的例項當中呢?假如你用屬性賦值的方法,看上去可行,但是你會發現我們還是「知道」了這個ilog服務例項的存在,這破壞了solid原則,你在「使用服務」這外增加了「獲取服務」這一不相關的任務,這時候就可以使用建構函式,在建構函式的引數中傳入(ilog logservice)這樣乙個例項,交給乙個私有成員_logservice,然後在類中使用_就好了。你可能會說,這不是換湯不換藥嗎?

你把屬性賦值變成了傳參,不還是得寫成ctor(logservice);這樣,logservice哪來呢?這時候就要更進一步使用諸如autofac之類的ioc類庫,去完成依賴的註冊。不過這些話題就有些遠了。

總的來說,建構函式的意義在於「例項化乙個具體功能的類」,這當然包括了「初始化」的部分,你可以查閱一些擴充套件資料,看看「初始化」之外的部分有多麼神奇。

9樓:網友

建構函式你也別想的太複雜,他起的作用你可以看作是初始化物件。

也就是說,當你例項乙個物件的時候,肯定會先去執行建構函式,其實就是初始化該物件內部定義的屬性。

當然就像你說的,你完全可以不用建構函式,在例項化物件以後,給其賦值也是可以的。

這個看個人開發的習慣和需求了。

10樓:網友

在物件程式語言中,一般在定義了乙個型別之後,為了能使用它,必須把這個型別具體化,也就是指定為乙個具體的物件。而建構函式就是從定義出發,建立與定義相對應的物件。用計算機語言來說,光有定義是不能使用,必須通過建構函式來分配記憶體空間給可使用的物件。

11樓:最後的小丁

一般情況下,如果沒有提供任何建構函式,編譯器會在後臺建立乙個預設的建構函式。這是乙個非常基本的建構函式,它只能把所有的成員欄位初始化為標準的預設值。

可以為建構函式提供任意多的過載,只要它們的簽名有明顯的區別即可。

12樓:網友

你可以在建構函式說初始化類所需要的某些資料。

就算你沒有定義建構函式,編譯時候編譯器也會自動幫你生成乙個預設建構函式。

create 和destroy相對應,在建構函式中開闢的空間或者建立的物件在destroy函式中要釋放掉,保證記憶體不洩漏。

比如說類裡面有個變數定義 string str; 你建立物件時如果要這個str有個初始值,就在建構函式里定義str=「初始值」;

以上是我個人見解。

13樓:網友

class a

public void a(引數)

例項化 就是創造乙個這個類方法 它雖然存在 但是呼叫的時候 你不創造怎麼用 還有就是 在 這個類上加個public 直接a. 就可以呼叫了 望採納。

14樓:匿名使用者

建構函式的作用,簡單來說就是初始化,初始化乙個新建的物件。

把你的問題具體化。不知道你的問題重點。)

什麼叫建構函式

15樓:酷月之心

簡單地說建構函式是類函式,函式名與類名完全相同,無返回值建構函式屬於類的成員函式,除了具有一般成員函式的特點外,還具有自己的特點:

1)是類的乙個特殊的成員函式,函式名與類名相同;

2)訪問屬性應該是public;

3)功能是初始化物件,在建構函式中一般不作初始化以外的事情;

4)可以在類內定義,也可在類外定義;

5)無函式返回型別,注意:什麼也不寫,也不可寫為void;

6)程式執行時,當物件被建立後,該物件所屬的類的建構函式自動被呼叫,在該物件生存期中也只呼叫這一次;

7)可以過載。

建構函式與普通函式的區別

16樓:網友

1. 返回值型別的區別:

1. 建構函式是沒有返回值型別 的,2. 普通函式是有返回值型別的,即使函式沒有返回值,返回值型別也要寫上void。

2. 函式名的區別:

1. 建構函式的函式名必須要與類名一致,2. 普通函式的函式名只要符合識別符號的命名規則即可。

3. 呼叫方式的區別:

1. 建構函式是 在建立物件的時候由jvm呼叫的。

2. 普通函式是由我們使用物件呼叫的,乙個物件可以物件多次普通 的函式,4. 作用上的區別:

1. 建構函式 的作用用於初始化乙個物件。

2. 普通函式是用於描述一類事物的公共行為的。

c中的建構函式是怎麼回事

任何時候,只要建立類或結構,就會呼叫它的建構函式。類或結構可能有多個接受不同引數的建構函式。建構函式使得程式設計師可設定預設值 限制例項化以及編寫靈活且便於閱讀的 如果您沒有為物件提供建構函式,則預設情況下 c 將建立一個建構函式,該建構函式例項化物件,並將所有成員變數設定為此處列出的預設值 預設值...

怎麼樣才能辨別男人是情場「老司機」

01有的男人表面上是個老司機,一言不合就開車,但是也有可能內心還是個純情小男生,親他一下,春風十里,羞紅臉。有的男人看上去人畜無害,實際上套路2.0,與時俱進,隨時更新,嘴上說不要,身體卻很誠實。還有種男人,他顏好衣q高,溫柔幽默,紳士體貼,上知天文下知地理,滿足你一切關於理想情人的幻想,讓人分分鐘...

怎麼樣辨別正版三星手機,怎麼辨別三星手機是正品還是高仿

由於市場存在山寨機 水貨 克隆機等,通過刷機等手段可以更改手機imei號。因此單憑序列號 imei號,是無法通過三星官網準確鑑別手機真偽。如果您要鑑別手機是否為大陸行貨手機,請務必攜帶上您的購機發票 包修卡和手機,到當地的三星服務中心檢測手機是否可以包修,如果可以包修說明是大陸上市的行貨手機,這個是...