共用方式為


參數陣列 (Visual Basic)

通常,您無法以多於程序宣告指定的引數呼叫一個程序。 當您需要不確定數目的引數時,可以宣告「參數陣列」(Parameter Array),讓程序能接受參數的陣列值。 當您定義該程序時,並不需要知道該參數陣列中項目的數目。 陣列的大小取決於程序的每一個呼叫。

宣告 ParamArray

您可使用 ParamArray (Visual Basic) 關鍵字,來代表參數清單中的參數陣列。 可套用下列規則:

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

  • 參數陣列必須以傳值的方式傳遞。 明確地將 ByVal (Visual Basic) 關鍵字包括在程序定義中是良好的程式設計方式。

  • 參數陣列自動成為選擇性的。 它的預設值是參數陣列的元素型別之空白一維陣列。

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

呼叫 ParamArray

呼叫定義參數陣列的程序時,可利用下列任一方式提供引數:

  • Nothing:也就是可省略 ParamArray (Visual Basic) 引數。 在這個情況下,會傳遞空的陣列到程序中。 您也可以傳遞 Nothing (Visual Basic) 關鍵字,效果是一樣的。

  • 任意數目的引數清單,由逗號分隔。 每一個引數的資料型別必須可以隱含轉換為 ParamArray 項目型別。

  • 元素型別與參數陣列之元素型別相同的陣列。

在所有的情況下,程序內的程式碼必須將參數陣列視為一維陣列,且其元素的資料型別會與 ParamArray 資料型別相同。

安全性注意事項安全性提示

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

範例

下列範例會定義,並呼叫函式calcSum。 ParamArray參數的修飾詞args可以讓來接受不同數目引數的函式。

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)

請參閱

參考

Optional (Visual Basic)

UBound

概念

Visual Basic 中的程序

程序參數和引數 (Visual Basic)

以傳值和傳址方式傳遞引數 (Visual Basic)

依位置和名稱傳遞引數 (Visual Basic)

選擇性參數 (Visual Basic)

程序多載化 (Visual Basic)

其他資源

Visual Basic 中的陣列