1樓:匿名使用者
樓主說的方式有點問題
new 一個物件的時候,就是通過呼叫構造方法來實現的。不能說呼叫的是類還是構造方法。
建構函式可以通過引數的數量、資料型別,可以進行過載。
2樓:匿名使用者
建構函式一定要跟類名相同,不然會報錯,你用new的時候,就是使用建構函式。
3樓:
很奇怪你為什麼會有這樣的問題,例項化必然使用new這樣的語法,編譯器會自動呼叫對應的建構函式,這是恆久不變的規則。
4樓:尉遲丶九方
類中的方法被呼叫前,必須例項化該類,然後再使用被例項化的物件再呼叫其中的方法。
除非該類是靜態類,或呼叫的方法是靜態方法
5樓:匿名使用者
class1 c=new class1;new後面的class1一定是類的名字,而不是建構函式,雖然他們同名,但是這一過程會呼叫類的建構函式,我這樣說不知道你能理解不?
6樓:匿名使用者
建構函式 是方法
方法是定義在類裡的
方法不能被例項化
例項化類後 才能用類裡的方法(靜態方法除外,無需例項化類可直接用)new 只能例項化類 建構函式是類被例項化時呼叫的
7樓:天上掉下個榴蓮
建構函式是用來例項化一個類的,new的時候當然是呼叫建構函式了。
8樓:匿名使用者
例項化,呼叫的是建構函式,而且類的建構函式一定和類名相同
9樓:
new 呼叫的肯定是建構函式啊
10樓:申瀟漪
例項化是建立一個物件,是對類的例項化,方法不能例項化
11樓:星星浪漫色
你沒理解建構函式的意思.
new 出的是類.
建構函式不存在 new 的問題.
慢慢意會吧,我還真說不明白...
12樓:
構造器的名字必須和類名相同
至於怎麼區分他,會通過你的語法來判斷
c#程式理解,怎麼理解建構函式,建構函式名字為什麼和類名是一樣的呢??
13樓:匿名使用者
建構函式是物件導向的程式設計**現的一種方法,它是每個類都會有的方法,作用是構造及初始化物件。為了程式編譯時能很好地辨識這個必須的「建構函式」。那這個建構函式的名字最好就有一定的規定。
現在規定了建構函式名字和類名一致,編譯時就知道哪些是建構函式, 例項化物件時就會呼叫合適的建構函式進行類的例項化。
建構函式 是一種特殊的方法 主要用來在建立物件時對物件進行初始化。即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別地,一個類可以有多個建構函式 可根據其引數個數的不同或引數型別的不同來區分它們,就是建構函式的過載。
建構函式是類自己在物件剛剛建立時候自己呼叫的,一般不允許使用者自己顯示呼叫建構函式。使用者只要將建構函式寫好,類在例項化物件的時候自動呼叫合適的建構函式對物件進行初始化(若有多個建構函式,系統會根據建構函式的形參來進行選擇)。
你可能會看到有些類沒有建構函式,這時候編譯器會自動生成一個形參為空的函式體為空的建構函式給該類。總之,建構函式是必須的。
你說的不懂的地方,其實就是在例項化kkk這個物件的時候,即kkk剛建立的時候,系統對自動呼叫一次program類的建構函式。這就是建構函式唯一一次呼叫的地方。使用者是不能顯示呼叫建構函式的。
這和c語言是有區別的,建構函式用於物件的初始化,這樣可以使物件的封裝性更好。
14樓:大海泛舟
可以這樣理解,它就像是做程式一樣,後臺中可能有好多的事件,但必須要執行的是page_load事件,讓它顯示一些值,別的事件你可以呼叫也可以不用;再說的白一點,就是給這個類賦一個初始值,使程式知道有這麼個類,它必須執行的就是這個建構函式,然後你可以對這個類裡面其它資料進行修改
15樓:匿名使用者
建構函式只有在類被例項化時(new時)呼叫一次,也可以理解成對類的初始化動作!
16樓:非馬
在c#中例項化類的時候總會自動呼叫建構函式,就算你沒有定義建構函式,編譯器也會自動加上一個預設的建構函式。不存在為什麼。
17樓:匿名使用者
建構函式是類實列化的依據,
建構函式名字和類名一樣是一種約定,談不上為什麼
c#中例項化的時候,new關鍵字用於建立物件和呼叫建構函式。呼叫建構函式是什麼意思?
18樓:飛天殺手
c#中方法就是函式,而建構函式就是與類名同名的方法,比如
public class test
}呼叫的時候就要 test t = new test(); respose.write(t.isflag);
19樓:叫什麼呢嫩
建構函式就是為了初始化類內部的成員變數,新建一個類的時候,會有預設的建構函式,而且是隱藏的,當你手工建立一個建構函式的時候,那預設的建構函式將不復存在
20樓:
對物件的內部成員進行初始化!
在c#中類的構造器,與類中的方法是如何區分的?
21樓:匿名使用者
兩位肯定是理解了,但是卻說錯了。
另外,樓主說「構造器」,我不知道你這說法**看來的,構造方法/建構函式的英文是constructor,如果你直譯,那確實是。而構造器,更多是見於一些設計模式中。
如何區分取決於誰來區分。對面對**的程式設計師來說,構造方法不是「沒有型別修飾符」,也更不是「沒有修飾符」。
1.構造方法可以使用訪問修飾符:private, public, internal,protected
著名的設計模式工廠方法和單件模式就是運用了私有建構函式
2.不可以使用virtual, abstract, override, new, sealed,
3.沒有返回型別
4.方法名與類名相同。
另外一個與類同名的方法是析構方法,區別是在名稱前加一個~(波浪號),不能overload,不含修飾符。
5.雖然可以有靜態建構函式,但是靜態建構函式不能指定引數和訪問修飾符。
6.struct同樣可以編寫自定義的建構函式,但是相反的,不能編寫無參(預設)的建構函式。
7.構造方法和普通方法相比,多出的內容:
this關鍵字。可以形成建構函式橫向的鏈式呼叫。this呼叫的是該類自身的建構函式
base關鍵字。建構函式縱項的鏈式呼叫。base呼叫的是直接父類的建構函式。
22樓:我的她最美
構造器沒有修飾符,名稱與類名相同,在例項化類的時候會自動執行構造器裡面的內容,每個類宣告的時候都會預設一個構造器。
如:class a //你宣告時候的樣子
等價於class a:object//所有類都繼承與object類} 構造器與方法的最大區別在於構造器沒有任何修飾符。是一種特殊的方法
23樓:匿名使用者
構造方法沒有型別修飾符,而且與類同名
public class user}
c# 在一個類中有兩個名稱相同的建構函式,它們所含引數個數相同,型別不同,使用的時候怎麼區分開
24樓:愛
class 自定義類
public string 中文月份(string 中文)}自定義類 月份 = new 自定義類();
messagebox.show(月份.中文月份(9) + "····" + 月份.中文月份(月份.中文月份(9)));
當呼叫是檢視引數列表進行選擇.
25樓:匿名使用者
靠引數型別區別!編譯器根據引數型別和數量,自動匹配合適的建構函式
26樓:鳶尾花語
這是過載,你傳遞不同的型別的值就可以了
你傳遞string 就會自動呼叫上面那個
int就呼叫下面的那個
27樓:人定勝天
不用區分開,程式會根據你傳的引數型別自動判斷!
c 中兩個函式函式名相同,引數型別和引數個數也相同,但是函式型別不同,那它們是過載函式嗎
函式過載只看引數個數和型別 所以如果只是返回值相同的函式就不是過載函式了 莊政警 這樣不是過載。函式過載要求函式的引數個數不同或者引數型別不同。因為呼叫函式的時候無法確認函式的返回型別,所以僅返回型別不同的函式都可以匹配,這樣就造成二義性,所以僅僅是返回型別不同是不能過載的,比如有int f int...
在C 中,函式名前的const和函式名後的const有區別嗎
有區別。首先要知道函式名後面加const只能用於成員函式。int const func 合法,相當於const int func int func2 const 非法,對函式的const限定詞只能用於成員函式 在成員函式中,const加在函式名前和後也是有區別的。例如 class a int con...
在c類中定義建構函式的目的是什麼
糖糖寳寳 建構函式通常用於在例項化物件時自動對內部資料成員初始化,設定初始值 分配記憶體空間等。而解構函式則用於刪除物件時做收尾工作,比如釋放申請的空間等。要建立一個物件,就得呼叫建構函式。要銷燬一個物件,就會被迫的呼叫解構函式。如果成員函式宣告稱static,不建立物件也能呼叫 靜態成員函式。 根...