今天小編給大家分享的是c#方法的參數(shù)類型的詳細(xì)介紹,相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
創(chuàng)新互聯(lián)建站專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、普蘭店網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為普蘭店等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。C#方法的參數(shù)有六種,分別是值參數(shù)、引用參數(shù)、輸出參數(shù)、參數(shù)數(shù)組、命名參數(shù)、可選參數(shù)。
值參數(shù)
值參數(shù)是方法的默認(rèn)類型,通過復(fù)制實(shí)參的值到形參的方式把數(shù)據(jù)傳遞到方法,方法被調(diào)用時(shí),系統(tǒng)作兩步操作;
1、在棧中為形參分配空間。
2、復(fù)制實(shí)參到形參。
1)在方法被調(diào)用前,用作實(shí)參的變量a1的引用已經(jīng)在棧里了。
2)隨著方法的開始,系統(tǒng)在棧中為形參分配空間,并從實(shí)參復(fù)制值。
3)因?yàn)閍1是引用類型,所以引用被復(fù)制,結(jié)果實(shí)參和形參都引用堆中的同一個(gè)對(duì)象。
4)因?yàn)閍2是值類型,所以值被復(fù)制,產(chǎn)生了一個(gè)獨(dú)立的數(shù)據(jù)。
5)在方法執(zhí)行后,形參被從棧中彈出。
6)a2、值類型,它的值不受方法行為的影響。
7)a1、引用類型,它的值被方法的行為改變了。
引用參數(shù)
1、使用引用參數(shù)時(shí),必須在方法的聲明與調(diào)用中使用ref修飾符。
2、實(shí)參必須是變量,在用作實(shí)參前必須賦值。
對(duì)于值參數(shù),系統(tǒng)在棧上為形參分配內(nèi)存;相反,對(duì)于引用參數(shù),形參的參數(shù)名看起來就好像是實(shí)參變量的別名,也就是說,它們指向的是相同的內(nèi)存位置。所以在方法的執(zhí)行過程中對(duì)形參作的任何改變,在方法執(zhí)行完成后依然有效(表現(xiàn)在實(shí)參變量上)。
引用參數(shù)的傳遞,對(duì)值類型與引用類型都是完全傳遞,不存在復(fù)制值與復(fù)制引用,即引用相同的內(nèi)存位置。
輸出參數(shù)
輸出參數(shù)用于從方法體內(nèi)把數(shù)據(jù)傳遞到調(diào)用代碼,它非常類似引用參數(shù)。
1、必須在方法的聲明與調(diào)用中使用out修飾符。
2、和引用參數(shù)相似,實(shí)參必須是變量。
就像引用參數(shù),輸出參數(shù)的形參擔(dān)當(dāng)實(shí)參的別名,方法內(nèi)對(duì)形參的任何改變?cè)诜椒▓?zhí)行完成后,通過實(shí)參變量都可見。
與引用參數(shù)的不同,輸出參數(shù)有以下2個(gè)要求。
1、在方法內(nèi)部,輸出參數(shù)在被讀取之前必須被賦值,這意味著參數(shù)的初始值是無關(guān)的,因此沒有必要在方法調(diào)用之前為實(shí)參賦值。
2、在方法返回前,方法內(nèi)部的任何貫穿的可能路徑都必須為所有輸出參數(shù)進(jìn)行一次賦值。
參數(shù)數(shù)組
上面3中參數(shù)方式,必須嚴(yán)格的一個(gè)實(shí)參對(duì)應(yīng)一個(gè)形參,參數(shù)數(shù)組不一樣,它允許零個(gè)或多個(gè)實(shí)參對(duì)應(yīng)一個(gè)特殊的形參。
參數(shù)數(shù)組的要求如下:
1、在一個(gè)參數(shù)列表中只能有一個(gè)參數(shù)數(shù)組。
2、如果有,它必須是列表中的最后一個(gè)。
聲明參數(shù)數(shù)組,必須要有params修飾符(調(diào)用不需要修飾符),必須是一種類型的數(shù)組。
使用分散式傳參時(shí),編譯器做如下事:
1)接受實(shí)參列表,用它們?cè)诙阎袆?chuàng)建并初始化一個(gè)數(shù)組。
2)把數(shù)組的引用保存到棧中的形參里。
3)如果在對(duì)應(yīng)的形參數(shù)組的位置沒有實(shí)參,編譯器會(huì)創(chuàng)建一個(gè)有零個(gè)元素的數(shù)組來使用。
4)如果數(shù)組參數(shù)是值類型,那么值被復(fù)制,實(shí)參不受方法內(nèi)部的影響。
5)如果數(shù)組參數(shù)是引用類型,那么引用被復(fù)制,實(shí)參引用的對(duì)象可以受到方法內(nèi)部的影響。
在使用數(shù)組式傳參時(shí),編譯器使用你的數(shù)據(jù)而不是重新創(chuàng)建一個(gè)。即相當(dāng)引用參數(shù)。
命名參數(shù)
上面用到的四種參數(shù),都是位置參數(shù),也就是說每個(gè)實(shí)參的位置必須一一對(duì)應(yīng)相應(yīng)的形參位置。
從.Net4.0開始,只要顯示指定參數(shù)的名字,就可以以任意順序在方法調(diào)用中列出實(shí)參,細(xì)節(jié)如下。
1.方法的聲明沒有什么不一樣。形參已經(jīng)有名字了。
2.不過在調(diào)用方法的時(shí)候,形參的名字后面跟著冒號(hào)和實(shí)際的參數(shù)值或表達(dá)式。
在調(diào)用的時(shí)候,也可以位置參數(shù)和命名參數(shù)混合使用,但是所有的位置參數(shù)必須先列出,
可選參數(shù)
可選參數(shù)是.Net4.0才加入的,在調(diào)用方法的時(shí)候可以包含這個(gè)參數(shù),也可以省略它。
為了表明某個(gè)參數(shù)是可選的,你需要在方法聲明的時(shí)候?yàn)閰?shù)提供默認(rèn)值。制定默認(rèn)值的語法和初始化本地變量的語法一樣。
如下圖
1)形參b設(shè)置成了默認(rèn)值。
2)因此,在調(diào)用方法的時(shí)候只有一個(gè)參數(shù),方法會(huì)使用3作為第二個(gè)參數(shù)的初始化。
對(duì)于可選參數(shù)的聲明,有幾個(gè)重要事項(xiàng):
1、不是所有的參數(shù)類型都可以作為可選參數(shù)。
1)、只要值類型的默認(rèn)值在編譯的時(shí)候可以確定,就可以使用值類型作為可選參數(shù)。
2)、只有在默認(rèn)值是null的時(shí)候,引用類型才可以作為可選參數(shù)來使用。
3)、可選參數(shù)只能是值參數(shù)。
2、所有必填參數(shù)必須在可選參數(shù)聲明之前聲明,如果有params參數(shù),必須在所有可選參數(shù)之后聲明。
3、必須從可選參數(shù)列表的最后開始省略,一直到開頭,否則會(huì)造成參數(shù)歧義。
4.若想消除參數(shù)歧義,可以結(jié)合命名參數(shù)和可選參數(shù)的特性。
如下圖
看完上述內(nèi)容,你們對(duì)c#方法的參數(shù)類型大概了解了嗎?如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。