最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
田东县| 霍林郭勒市| 五峰| 清流县| 内江市| 宣武区| 远安县| 旅游| 翼城县| 天长市| 东安县| 纳雍县| 台东市| 满城县| 寿阳县| 灯塔市| 嘉兴市| 周宁县| 渑池县| 汶上县| 新余市| 灵璧县| 连云港市| 如皋市| 神农架林区| 涞水县| 庄河市| 方山县| 河津市| 莎车县| 巩义市| 扬中市| 桃园市| 清镇市| 南召县| 太仆寺旗| 彭水| 西林县| 长治县| 长顺县| 尤溪县|