如何:多載使用選擇性參數的程序 (Visual Basic)

如果程序有一或多個選擇性參數,您就無法定義符合其任何隱含多載的多載版本。 如需詳細資訊,請參閱多載程序的考量中的<選擇性參數的隱含多載>。

一個選擇性參數

對接受一個選擇性參數的程序進行多載

  1. 撰寫 SubFunction 宣告陳述式,以在參數清單中包括選擇性參數。 請勿在此多載版本中使用 Optional 關鍵字。

  2. SubFunction 關鍵字前面加上 Overloads 關鍵字。

  3. 撰寫程序程式碼,此程式碼應該在呼叫程式碼提供選擇性引數時執行。

  4. End SubEnd Function 陳述式 (視何者適用) 終止程序。

  5. 撰寫與第一個宣告完全相同的第二個宣告陳述式,但參數清單中不包括選擇性參數。

  6. 撰寫程序程式碼,此程式碼應該在呼叫程式碼不提供選擇性引數時執行。 以 End SubEnd Function 陳述式 (視何者適用) 終止程序。

    下列範例示範使用選擇性參數定義的程序、兩個多載程序的對等集合,最後是無效和有效多載版本的範例。

    Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
    
    ' The preceding definition is equivalent to the following two overloads.
    ' Overloads Sub q(ByVal b As Byte)
    ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
    
    ' Therefore, the following overload is not valid because the signature is already in use.
    ' Overloads Sub q(ByVal c As Byte, ByVal k As Long)
    ' The following overload uses a different signature and is valid.
    Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
    

多個選擇性參數

對於具有多個選擇性參數的程序,您通常需要兩個以上的多載版本。 例如,如果有兩個選擇性參數,而且呼叫程式碼可以單獨提供或省略每個參數,則需要四個多載版本,一個用於所提供引數的每個可能組合。

隨著選擇性參數的數目增加,多載的複雜度會增加。 除非無法接受某些所提供引數的組合,否則對於 N 個選擇性參數,您需要 2 ^ N 個多載版本。 根據程序的本質,您可能會發現邏輯的明確性證明定義所有多載版本所花費的額外努力都是值得的。

對接受一個以上選擇性參數的程序進行多載

  1. 判斷程序邏輯可接受之所提供選擇性引數的組合。 如果某個選擇性參數相依於另一個選擇性參數,可能就會發生無法接受的組合。 例如,如果有一個參數會接受人員的名稱,而另一個參數會接受人員的年齡,則提供年齡但省略名稱的引數組合就是無法接受的。

  2. 針對所提供選擇性引數的每個可接受組合,撰寫 SubFunction 宣告陳述式來定義對應的參數清單。 請勿使用 Optional 關鍵字。

  3. 在每個宣告中,於 SubFunction 關鍵字前面加上 Overloads 關鍵字。

  4. 在每個宣告之後,撰寫當呼叫程式碼提供對應至該宣告參數清單的引數清單時應執行的程序程式碼。

  5. End SubEnd Function 陳述式 (視何者適用) 終止每個程序。

另請參閱