HOW TO:多載使用不定數目參數的程序 (Visual Basic)
如果程序擁有 ParamArray (Visual Basic) 參數,就無法定義採用一維陣列當做參數陣列的多載版本。如需詳細資訊,請參閱多載化程序的考慮因素 (Visual Basic)中的<ParamArray 參數的隱含多載>一節。
若要多載可接受變動數目之參數的程序
確定程序和呼叫程式碼邏輯在多載版本中的好處,會比在 ParamArray 參數中的還多。請參閱多載化程序的考慮因素 (Visual Basic)中的<多載和參數陣列>一節。
決定程序在參數清單的變數部分中,應該接受的提供值數目。這可能包含沒有值的情況,也可能只有單一的一維陣列。
對於每一個提供值的可接受數目,撰寫 Sub 或 Function 宣告陳述式來定義對應的參數清單。不要在這個多載版本中使用 Optional 或 ParamArray 關鍵字。
在每個宣告中,於 Sub 或 Function 關鍵字的前面加上 Overloads (Visual Basic) 關鍵字。
遵循每一個宣告來撰寫程序程式碼,以便在呼叫程式碼提供與該宣告的參數清單相對應的值時,執行該程式碼。
請視需要以 End Sub 或 End Function 陳述式來結束每個程序。
範例
下列範例顯示 ParamArray (Visual Basic) 參數所定義的程序,然後顯示相等的多載程序集。
Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.
對於這類擁有採用一維陣列當做參數陣列的參數清單之程序,您無法多載。然而,您可以使用其他隱含多載的簽章。下面宣告可說明這點。
' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)
多載版本的程式碼不必測試呼叫程式碼是否提供一或多個 ParamArray 參數值;若提供則顯示數目。Visual Basic 會將控制權傳遞給符合呼叫引數清單的版本。
編譯程式碼
由於含 ParamArray 參數的程序等於一組多載版本,所以只要程序的參數清單與其中任何隱含多載相對應,您就無法多載該程序。如需詳細資訊,請參閱多載化程序的考慮因素 (Visual Basic)。
安全性
只要處理可能是無限大的陣列,就會有導致應用程式內部容量滿溢的風險。如果接受參數陣列,就應該測試呼叫程式碼傳給它的陣列長度,若長度對應用程式而言太大,請執行適當的步驟。
請參閱
工作
HOW TO:定義程序的多個版本 (Visual Basic)
HOW TO:多載使用選擇性參數的程序 (Visual Basic)