六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習分享的學(xué)習平臺!

VB.NET是怎么做到的(7)——可選參數(shù)與按名傳遞

[摘要].NET Blog上最近新貼子的數(shù)目有減少的趨勢。我覺得每個人都應(yīng)該勤快一點,分享自己經(jīng)驗和想法,別讓這個Blog衰落下去。 VB從4.0開始支持“可選參數(shù)”這一特性。就是說,函數(shù)或子程序的參數(shù)有些...
.NET Blog上最近新貼子的數(shù)目有減少的趨勢。我覺得每個人都應(yīng)該勤快一點,分享自己經(jīng)驗和想法,別讓這個Blog衰落下去。

VB從4.0開始支持“可選參數(shù)”這一特性。就是說,函數(shù)或子程序的參數(shù)有些是可選的,調(diào)用的時候可以不輸入。其實VB從1.0開始就有一些函數(shù)帶有可選參數(shù),只不過到了4.0才讓用戶自己開發(fā)這樣的過程。在VB4里,可選參數(shù)可以不帶默認值,而在VB.NET里,如果使用可選參數(shù),則必須帶有默認值。如

Public Sub TestOptional(Optional i As Integer = 1)

End Sub

調(diào)用的時候,既可以寫成TestOptional(2),也可以寫成TestOptional(),這種情況參數(shù)i自動等于1。如果過程有不止一個可選參數(shù),則VB還提供一種簡化操作的方法——按名傳遞參數(shù)。比如過程

Public Sub TestOptional(Optional i As Int32 = 1, Optional j As Int32 = 1, Optional k As Int32 = 1)

End Sub

如果只想指定k,讓i和j使用默認值,就可以使用按名傳遞,如下

TestOptional(k := 2)

而且這種方式不受參數(shù)表順序的限制

TestOptional(k := 2, i := 3, j := 5)

這些的確是相當方便的功能,C#就不支持上述兩個特性。我們看看它是怎樣在IL級別實現(xiàn)的。上述第一個方法在IL中的定義為

.method public instance void TestOptional([opt] int32 i) cil managed
{
.param [1] = int32(0x00000001)
.maxstack 8

可見,參數(shù)被加上了[opt]修飾符,而且.param指定了參數(shù)的默認值。這是只有VB能識別的內(nèi)容,C#會跳過他們。在調(diào)用的時候,VB若發(fā)現(xiàn)參數(shù)被省略,則自動讀取.param部分的默認值,并顯式傳遞給過程。這一部分完全由編譯器處理,而且沒有任何性能損失,和手工傳遞所有參數(shù)是完全一樣的。至于按名傳遞,VB會自動調(diào)整參數(shù)的順序,其結(jié)果與傳統(tǒng)方式的傳遞也沒有任何的不同。這說明我們可以放心地使用這項便利。而且?guī)в锌蛇x參數(shù)的過程拿到C#中,頂多變成不可選參數(shù),也不會造成什么其他的麻煩。

PS.很多COM組件都使用了默認參數(shù),而且有些過程的參數(shù)列表非常長,在VB里可以輕松地處理它們,而在C#中經(jīng)常讓開發(fā)者傳參


主站蜘蛛池模板: 最新在线精品国自产拍网站 | 亚洲视频自拍 | 最近最新中文字幕免费的一页 | 亚洲人成网站色7799在线播放 | 五月激情片 | 日韩美女黄大片在线观看 | 夜夜嗨视频 | 婷婷在线五月 | 青青操夜夜操 | 日韩黄视频 | 在线观看男女爱视频网站 | 亚洲午夜精品一级在线 | 青青成人福利国产在线视频 | 在线视频日韩精品 | 亚洲一级免费毛片 | 天堂视频在线 | 午夜国产精品福利在线观看 | 天天舔天天射天天干 | 青青草原国产视频 | 欧美性活一级视频 | 日本最新免费二区 | 天堂一区二区三区在线观看 | 天天摸天天干 | 日本天堂网站 | 天天看a| 四虎在线最新永久免费播放 | 日本三级香港三级国产三级 | 色综合久久天天综线观看 | 天天插伊人 | 在线亚洲一区 | 天堂18| 天堂 在线最新版在线 | 欧洲免费极品videos | 午夜免费观看_视频在线观看 | 深夜国产一区二区三区在线看 | 啪啪色视频 | 午夜激情一区 | 亚洲欧美在线观看一区二区 | 亚洲国产日韩在线观频 | 午夜精品福利影院 | 日韩一级片免费观看 |