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

如果程式有一或多個 選擇性 參數,則您無法定義符合其任何隱含多載的多載版本。 如需詳細資訊,請參閱重載程序中的注意事項中的「選擇性參數的隱式重載」。

一個選擇性參數

多載採用一個選擇性參數的程式

  1. 撰寫 Sub 或 Function 宣告語句,包含在參數清單中的選用參數。 請勿在此多載版本中使用 Optional 關鍵詞。

  2. 在 Sub 或 Function 關鍵詞前面加上 Overloads 關鍵詞。

  3. 撰寫程式代碼,此程式代碼應在呼叫程式代碼提供選擇性自變數時執行。

  4. 視需要以 End Sub 或 End Function 語句終止程式。

  5. 撰寫第二個宣告語句,這個語句與第一個宣告相同,不同之處在於它不包含參數清單中的選擇性參數。

  6. 撰寫當呼叫程式代碼未提供選擇性自變數時,應該執行的程式代碼。 視需要以 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 個多載版本。 根據程式的性質,您可能會發現邏輯的明確性可讓定義所有多載版本的額外工作合理。

多載採用多個選擇性參數的程式

  1. 判斷程式邏輯可接受所提供選擇性自變數的組合。 如果某個選擇性參數相依於另一個選擇性參數,可能會產生不可接受的組合。 例如,如果一個參數接受人員的名稱,而另一個參數接受該人員的年齡,則提供年齡但省略名稱的自變數組合是不可接受的。

  2. 針對提供之選擇性自變數的每個可接受的組合,撰寫SubFunction或宣告語句來定義對應的參數清單。 請勿使用 Optional 關鍵詞。

  3. 在每個宣告中,在 Sub 或 Function 關鍵詞前面加上 Overloads 關鍵詞。

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

  5. 視需要以 End Sub 或 End Function 語句終止每個程式。

另請參閱