共用方式為


參數陣列 (Visual Basic)

通常,您無法呼叫具有比程式宣告指定的更多自變數的程式。 當您需要無限數目的自變數時,可以宣告 參數數位,這可讓程式接受參數的值陣列。 當您定義程式時,您不需要知道參數陣列中的元素數目。 陣列的尺寸是由程序中的每個呼叫單獨決定。

宣告 ParamArray

您可以使用 ParamArray 關鍵字來表示參數清單中的參數陣列。 適用的規則如下:

  • 程式只能定義一個參數陣列,而且它必須是程式定義中的最後一個參數。

  • 參數陣必須以值傳遞。 在程式定義中明確包含 ByVal 關鍵詞是很好的程式設計做法。

  • 參數陣組是自動選擇性的。 其預設值是參數陣列元素類型的空白一維數位列。

  • 參數陣列之前的所有參數都必須必要。 參數陣列必須是唯一的可選參數。

使用 ParamArray

當您呼叫定義參數陣列的程式時,您可以使用下列任一種方式來提供 自變數:

  • Nothing - 也就是說,您可以省略 ParamArray 自變數。 在此情況下,空陣列會傳遞至程序。 如果您明確傳遞 Nothing 關鍵詞,則 Null 陣列會傳遞至程式,如果呼叫的程式未檢查此條件,可能會導致 NullReferenceException。

  • 任意數目的自變數清單,以逗號分隔。 每個自變數的數據類型必須隱含轉換成 ParamArray 項目類型。

  • 陣列,與參數陣列的元素類型相同。

在所有情況下,程式碼會將參數陣列視為與 ParamArray 數據類型相同的一維陣列。

這很重要

當您處理可能無限大陣列時,可能會有超過應用程式某些內部容量的風險。 如果您接受參數陣列,您應該測試呼叫端程式代碼傳遞給它之陣列的大小。 如果某項目對您的應用程式而言太大,請採取適當的步驟。 如需詳細資訊,請參閱陣列

範例

下列範例會定義 並呼叫 函式 calcSum。 參數ParamArray的修飾詞可讓函式接受可變數目的參數。

Module Module1

    Sub Main()
        ' In the following function call, CalcSum's local variables
        ' are assigned the following values: args(0) = 4, args(1) = 3,
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = CalcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum
        ' displayed by the following statements is 0.
        returnedValue = CalcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    Public Function CalcSum(ByVal ParamArray args() As Double) As Double
        CalcSum = 0
        If args.Length <= 0 Then Exit Function
        For i As Integer = 0 To UBound(args, 1)
            CalcSum += args(i)
        Next i
    End Function

End Module

下列範例定義了一個具有參數陣列的程序,並輸出傳遞至該參數陣列之所有陣列元素的值。

Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
    Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
    ' Use UBound to determine largest subscript of the array.
    For i As Integer = 0 To UBound(scores, 1)
        Debug.WriteLine("Score " & i & ": " & scores(i))
    Next i
End Sub
Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)

另請參閱