日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

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

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

更新時間:2022-05-04 文章作者:未知 信息來源:網絡 閱讀次數:

.NET Blog上最近新貼子的數目有減少的趨勢。我覺得每個人都應該勤快一點,分享自己經驗和想法,別讓這個Blog衰落下去。

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

Public Sub TestOptional(Optional i As Integer = 1)

End Sub

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

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)

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

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

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

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

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

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

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 亚洲欧美日韩国产专区一区 | 国产一区小可爱原卡哇伊 | 欧美成人一区二区 | 12306午夜被窝播播影院yw188 | 国产精品久久久久这里只有精品 | 综合伊人 | 日日摸夜夜添夜夜添破第一 | freexxxx呦女 | 国内精品视频成人一区二区 | 91啦视频在线观看 | 韩国美女福利专区一区二区 | 怡红院在线观看视频 | 99aiav国产精品视频 | 亚洲天堂第一页 | 国产精品夜色一区二区三区 | 最近更新中文字幕第一页 | 国产91 最新 在线 | 台湾一级特黄精品大片 | 久久精品日日躁精品 | 国产在线视频不卡 | 99久久精品免费观看区一 | 欧美一级日韩一级亚洲一级 | 天天干天天操天天 | 91精品国产麻豆国产自产在线 | 9999精品视频| 国产亚洲精品国产福利在线观看 | 免费观看a级毛片 | 手机免费久久久久影院 | 久久久久久久尹人综合网亚洲 | 欧美国产亚洲精品a第一页 欧美国产亚洲精品高清不卡 | 国产女上位 | 日韩视频中文字幕 | 国产一区二 | 97超级碰碰碰视频在线视频观看 | 精品精品国产高清a毛片 | 欧美日韩精品在线视频 | 日日操天天 | 久草在线视频看看 | 日韩 一级片 | 国产男女爽爽爽免费视频 | 色婷婷99综合久久久精品 |