日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
快速了解VB.NET可選參數(shù)

VB.NET還是比較常用的,于是我研究了一下VB.NET可選參數(shù),在這里拿出來和大家分享一下,希望對大家有用。VB從4.0開始支持“可選參數(shù)”這一特性。就是說,函數(shù)或子程序的參數(shù)有些是可選的,調(diào)用的時候可以不輸入。其實VB從1.0開始就有一些函數(shù)帶有可選參數(shù),只不過到了4.0才讓用戶自己開發(fā)這樣的過程。在VB4里,可選參數(shù)可以不帶默認(rèn)值,而在VB.NET里,如果使用可選參數(shù),則必須帶有默認(rèn)值。如

 
 
 
  1. Public Sub TestOptional(Optional i As Integer = 1)  
  2. End Sub  

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

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

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

 
 
 
  1. TestOptional(k := 2) 

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

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

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

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

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

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


當(dāng)前題目:快速了解VB.NET可選參數(shù)
網(wǎng)站URL:http://www.5511xx.com/article/cdocpdp.html