如果程式有一或多個 選擇性 參數,則您無法定義符合其任何隱含多載的多載版本。 如需詳細資訊,請參閱重載程序中的注意事項中的「選擇性參數的隱式重載」。
一個選擇性參數
多載採用一個選擇性參數的程式
撰寫
Sub
或Function
宣告語句,包含在參數清單中的選用參數。 請勿在此多載版本中使用Optional
關鍵詞。在
Sub
或Function
關鍵詞前面加上 Overloads 關鍵詞。撰寫程式代碼,此程式代碼應在呼叫程式代碼提供選擇性自變數時執行。
視需要以
End Sub
或End Function
語句終止程式。撰寫第二個宣告語句,這個語句與第一個宣告相同,不同之處在於它不包含參數清單中的選擇性參數。
撰寫當呼叫程式代碼未提供選擇性自變數時,應該執行的程式代碼。 視需要以
End Sub
或End 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 個多載版本。 根據程式的性質,您可能會發現邏輯的明確性可讓定義所有多載版本的額外工作合理。
多載採用多個選擇性參數的程式
判斷程式邏輯可接受所提供選擇性自變數的組合。 如果某個選擇性參數相依於另一個選擇性參數,可能會產生不可接受的組合。 例如,如果一個參數接受人員的名稱,而另一個參數接受該人員的年齡,則提供年齡但省略名稱的自變數組合是不可接受的。
針對提供之選擇性自變數的每個可接受的組合,撰寫
Sub
Function
或宣告語句來定義對應的參數清單。 請勿使用Optional
關鍵詞。在每個宣告中,在
Sub
或Function
關鍵詞前面加上 Overloads 關鍵詞。在每個宣告之後,撰寫當呼叫程式代碼提供對應至該宣告參數清單的自變數清單時,應該執行的程序代碼。
視需要以
End Sub
或End Function
語句終止每個程式。