如何:多載使用不定數目參數的程序 (Visual Basic)
如果程序有 ParamArray 參數,您就無法定義採用參數陣列一維陣列的多載版本。 如需詳細資訊,請參閱多載程序的考量中的〈ParamArray 參數的隱含多載〉。
若要多載使用變數參數數目的程序
確定程序和呼叫程式碼邏輯的優點高於
ParamArray
參數多載版本。 請參閱多載程序的考量中的<多載和 ParamArrays>。判斷程序應該在參數清單變數部分中接受的提供值數目。 這可能包含沒有值的案例,而且可能包含單一一維陣列的案例。
針對每個可接受的提供值數目,撰寫
Sub
或Function
宣告陳述式來定義對應的參數清單。 請勿在此多載版本中使用Optional
或ParamArray
關鍵字。在每個宣告中的
Sub
或Function
關鍵字前面加上 Overloads 關鍵字。在每個宣告之後,撰寫當呼叫程式碼提供對應至該宣告參數清單的值時,應該執行的程式碼。
以
End Sub
或End Function
陳述式 (視何者適用) 終止每個程序。
範例
下列範例示範使用 ParamArray 參數所定義的程序,以及一組相等的多載程序。
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
參數的程序相當於一組多載版本,所以您無法使用對應至這些隱含多載任何參數清單的參數清單來多載這類程序。 如需詳細資訊,請參閱多載程序的考量。
.NET Framework 安全性
每當您處理可能無限大的陣列時,都會有應用程式部分內部容量不足的風險。 如果您接受參數陣列,您應該測試傳遞給該陣列的呼叫程式碼陣列長度,如果長度對您的應用程式過大,請採取適當的步驟。