共用方式為


如何:多載使用不定數目參數的程序 (Visual Basic)

如果程序擁有 ParamArray (Visual Basic) 參數,就無法定義採用一維陣列當做參數陣列的多載版本。 如需詳細資訊,請參閱多載化程序的考慮因素 (Visual Basic)中的<ParamArray 參數的隱含多載>一節。

若要多載可接受變動數目之參數的程序

  1. 確定程序和呼叫程式碼邏輯在多載版本中的好處,會比在 ParamArray 參數中的還多。 請參閱多載化程序的考慮因素 (Visual Basic)中的<多載和參數陣列>一節。

  2. 決定程序在參數清單的變數部分中,應該接受的提供值數目。 這可能包含沒有值的情況,也可能只有單一的一維陣列。

  3. 對於每一個提供值的可接受數目,撰寫 Sub 或 Function 宣告陳述式來定義對應的參數清單。 不要在這個多載版本中使用 Optional 或 ParamArray 關鍵字。

  4. 在每個宣告中,於 Sub 或 Function 關鍵字的前面加上 Overloads (Visual Basic) 關鍵字。

  5. 遵循每一個宣告來撰寫程序程式碼,以便在呼叫程式碼提供與該宣告的參數清單相對應的值時,執行該程式碼。

  6. 請視需要以 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)

安全性

只要處理可能是無限大的陣列,就會有導致應用程式內部容量滿溢的風險。 如果接受參數陣列,就應該測試呼叫程式碼傳給它的陣列長度,若長度對應用程式而言太大,請執行適當的步驟。

請參閱

工作

疑難排解程序 (Visual Basic)

如何:定義程序的多個版本 (Visual Basic)

如何:呼叫多載程序 (Visual Basic)

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

概念

Visual Basic 中的程序

程序參數和引數 (Visual Basic)

選擇性參數 (Visual Basic)

參數陣列 (Visual Basic)

程序多載化 (Visual Basic)

多載解析 (Visual Basic)