您好,登錄后才能下訂單哦!
如何理解VB.NET可選參數,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
VB.NET還是比較常用的,于是我研究了一下VB.NET可選參數,在這里拿出來和大家分享一下,希望對大家有用。VB從4.0開始支持“可選參數”這一特性。就是說,函數或子程序的參數有些是可選的,調用的時候可以不輸入。其實VB從1.0開始就有一些函數帶有可選參數,只不過到了4.0才讓用戶自己開發(fā)這樣的過程。在VB4里,可選參數可以不帶默認值,而在VB.NET里,如果使用可選參數,則必須帶有默認值。如
Public Sub TestOptional(Optional i As Integer = 1) End Sub
調用的時候,既可以寫成TestOptional(2),也可以寫成TestOptional(),這種情況參數i自動等于1。如果過程有不止一個VB.NET可選參數,則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若發(fā)現參數被省略,則自動讀取.param部分的默認值,并顯式傳遞給過程。這一部分完全由編譯器處理,而且沒有任何性能損失,和手工傳遞所有參數是完全一樣的。至于按名傳遞,VB會自動調整參數的順序,其結果與傳統(tǒng)方式的傳遞也沒有任何的不同。這說明我們可以放心地使用這項便利。而且?guī)в蠽B.NET可選參數的過程拿到 C#中,頂多變成不VB.NET可選參數,也不會造成什么其他的麻煩。
關于如何理解VB.NET可選參數問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。