共用方式為


如何:多載接受無限數目參數的程式 (Visual Basic)

如果程序具有 ParamArray 參數,則無法定義接受一維陣列作為參數陣列的重載版本。 如需詳細資訊,請參閱多載程式的考量中的「ParamArray 參數的隱含多載」。

多載帶有可變數數目的參數的程序

  1. 確保程序和呼叫代碼的邏輯比使用 ParamArray 參數更能從多載版本中受益。 請參閱 重載方法的注意事項<重載與 ParamArrays>。

  2. 判斷程式應該在參數清單變數部分接受的提供值數目。 這可能包含沒有值的案例,而且可能包含單一一維數位列的案例。

  3. 針對每個可接受的提供值數目,撰寫SubFunction或宣告語句來定義對應的參數清單。 請勿在此多載版本中使用 OptionalParamArray 關鍵詞。

  4. 在每個宣告中,在 SubFunction 關鍵詞前面加上 Overloads 關鍵詞。

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

  6. 視需要以 End SubEnd 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 安全性

當您處理可能無限大陣列時,可能會有超過應用程式某些內部容量的風險。 如果您接受參數陣列,您應該測試呼叫代碼傳遞的陣列的長度,如果它超出應用程式的處理能力,則應採取適當的措施。

另請參閱