五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

劉鐵猛C#教程學(xué)習(xí)筆記4-2 方法詳解(2)

2023-06-08 14:21 作者:JK_降谷羽  | 我要投稿

構(gòu)造器的內(nèi)存原理

使用默認(rèn)構(gòu)造器時(shí)

student類有兩個(gè)字段,其中ID是int類型,是占用四個(gè)字節(jié)的結(jié)構(gòu)體類型

而Name是string類型,是引用類型,占用四個(gè)字節(jié),存儲(chǔ)的是引用的實(shí)例的地址

1.分配內(nèi)存空間

使用默認(rèn)的Student stu = new?Student(); 時(shí),stu是一個(gè)局部變量,應(yīng)該存儲(chǔ)在

圖中綠色為聲明stu變量時(shí)為其準(zhǔn)備的內(nèi)存空間,現(xiàn)在還是空的,要等new操作符執(zhí)行完后將實(shí)例地址存入

new操作符創(chuàng)建實(shí)例時(shí)在堆(自由存儲(chǔ)空間)上開辟內(nèi)存

該類的int字段占4字節(jié),string字段占4字節(jié),所以共開辟8個(gè)字節(jié)的存儲(chǔ)空間

2.初始化

實(shí)例占用的內(nèi)存空間分配好后,就要調(diào)用構(gòu)造器函數(shù)了

構(gòu)造器會(huì)按類型的字段切割分到的內(nèi)存空間,默認(rèn)構(gòu)造器會(huì)將空間內(nèi)值全部刷成0

string變量值都為0時(shí),是NULL值

3.將地址存入引用變量

內(nèi)存分配、初始化結(jié)束后,會(huì)將創(chuàng)建的實(shí)例地址存入引用變量stu


自定義構(gòu)造函數(shù)

會(huì)在第二步初始化時(shí)將值存入實(shí)例的字段

string是引用變量,賦值時(shí)存的又是另一個(gè)實(shí)例的地址

方法的重載(Overload)

如圖所示

Console類里有19個(gè)名字叫WriteLine的方法定義

方法名相同,但這19個(gè)方法的“方法簽名”的不同,按上下鍵可以切換不同的重載定義,會(huì)顯示不同的參數(shù)

只要方法簽名不同,就可以同時(shí)定義同名方法作為重載!

方法簽名

方法簽名由

1.方法的名字

2.方法的類型形參(待續(xù))

3.每一個(gè)參數(shù)(從左到右)的類型、種類(值、引用或輸出)組成

方法的簽名不包括方法的返回值類型、形參變量名!

錯(cuò)例1:

如圖所示兩個(gè)參數(shù)數(shù)量、類型、種類完全相同,但返回值類型不同的方法

這樣兩個(gè)方法是不能同時(shí)定義的!

錯(cuò)例2:

形參類型、數(shù)量、種類相同,但形參變量名不同,這樣兩個(gè)方法也不能同時(shí)定義!

再次強(qiáng)調(diào):

構(gòu)成方法簽名的:方法名、類型形參(目前未接觸)、從左到右每一個(gè)參數(shù)類型、種類

兩個(gè)方法方法名相同,簽名不同時(shí),就可以重載

補(bǔ)充1:類型形參

使用在泛型方法中

參數(shù)的類型也參與到方法體組成的方法

以上的<T>就是類型形參

類型形參參與構(gòu)成方法簽名


補(bǔ)充2:參數(shù)種類(引用傳遞、值傳遞)

以上不加額外修飾符的參數(shù)默認(rèn)為值參數(shù)

若在參數(shù)類型前加上修飾符ref,就會(huì)將其轉(zhuǎn)換為引用傳遞的參數(shù)

若在參數(shù)類型前加上修飾符out,就會(huì)將其轉(zhuǎn)換為輸出參數(shù)

稱作參數(shù)的種類,參數(shù)的種類參與構(gòu)成參數(shù)簽名

實(shí)例構(gòu)造器也可以使用重載,構(gòu)造器的簽名由方法名(與類型名相同的)、形參列表構(gòu)成

重載決策

根據(jù)調(diào)用時(shí)傳遞進(jìn)方法的參數(shù)的數(shù)量、類型來決定使用哪個(gè)方法定義

方法的debug(以VS中為例)

1.斷點(diǎn)

在代碼一行前面的空白點(diǎn)一下,設(shè)置斷點(diǎn)后,在調(diào)試模式運(yùn)行時(shí),程序運(yùn)行到這一行時(shí)會(huì)暫停,此時(shí)可以觀察程序的狀態(tài),在VS中此時(shí)將鼠標(biāo)放在任意一個(gè)變量上,會(huì)顯示該變量當(dāng)前的值

2.Call stack(調(diào)用棧)

“call stack”窗口會(huì)顯示調(diào)用了斷點(diǎn)所在語句的地方

有幾層牽涉到斷點(diǎn)的調(diào)用關(guān)系,call stack就有幾層,就更深

可以稱作調(diào)用棧

遞歸方法如果出現(xiàn)無限遞歸,調(diào)用棧就會(huì)越來越深,最后導(dǎo)致內(nèi)存爆棧


3.Step into(步入、逐步執(zhí)行)

快捷鍵為F11

單步執(zhí)行,遇到子函數(shù)就進(jìn)入并且繼續(xù)單步執(zhí)行

按F11鍵,跳轉(zhuǎn)到當(dāng)前選中的正在被調(diào)用的函數(shù)的函數(shù)體

每按一次F11,call stack窗口就會(huì)減少一層

(在調(diào)用關(guān)系上走到上一層,對(duì)調(diào)用關(guān)系抽絲剝繭)

“最細(xì)膩的debug方式”

4.Step over(步過)

快捷鍵為F10

在單步執(zhí)行時(shí),在函數(shù)內(nèi)遇到子函數(shù)時(shí)不會(huì)進(jìn)入子函數(shù)內(nèi)單步執(zhí)行,而是將子函數(shù)整個(gè)執(zhí)行完在停止,也就是把子函數(shù)整個(gè)作為一步

遇到調(diào)用函數(shù)時(shí),直接走完此函數(shù)得到結(jié)果

對(duì)確認(rèn)無問題的函數(shù),可以用F10跳過,對(duì)有懷疑的函數(shù),可以按F11走進(jìn)去逐步檢查

“稍粗曠一些的debug方式”

5.Step out

在單步執(zhí)行到子函數(shù)內(nèi)時(shí),用Step out就可以執(zhí)行完子函數(shù)余下部分,并返回上一層函數(shù)。

6.觀察局部變量的值的變化

在local窗口中可觀察當(dāng)前打有斷點(diǎn)的函數(shù)內(nèi)的局部變量的值



































劉鐵猛C#教程學(xué)習(xí)筆記4-2 方法詳解(2)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
塘沽区| 治多县| 吕梁市| 西林县| 黄龙县| 金乡县| 仁化县| 礼泉县| 巧家县| 自贡市| 太原市| 呈贡县| 镇巴县| 金寨县| 高雄县| 遂溪县| 麻江县| 理塘县| 乃东县| 介休市| 光泽县| 沙湾县| 裕民县| 太谷县| 蕉岭县| 饶阳县| 临沂市| 海丰县| 门源| 沁阳市| 济阳县| 邹平县| 毕节市| 德阳市| 瓦房店市| 奈曼旗| 蒙山县| 福海县| 楚雄市| 大安市| 广昌县|