共用方式為


HOW TO:定義使用不定數目參數的程序 (Visual Basic)

您可以宣告「參數陣列」(Parameter Array),做為程序參數清單中的最後一個項目。 這可讓程序接受該參數的一組值,而不只接受一個值。 定義程序時,您不需知道這組值的數目。 這組值取決於程序的每一個呼叫,而每一個呼叫都可能傳遞不同數目的值。

如需詳細資訊,請參閱參數陣列 (Visual Basic)

若要將程序的最後一個參數定義為可接受不定數目的值

  1. 在程序宣告中,以一般方式定義參數清單。 除了最後一個參數之外,所有參數都必須是必要項,而非 Optional (Visual Basic)

  2. 在最後一個參數名稱之前加上關鍵字 ByVal ParamArray, 此參數會自動成為選擇項。 不要包含 Optional 關鍵字。

  3. 在參數陣列名稱之後,加上一對空括弧。

  4. 在空括弧之後,加上一般的 As 子句。

  5. 不要在 As 子句之後加上預設值。 參數陣列的預設值會自動設為空的一維陣列,其資料型別就是您在 As 子句中指定的型別。

使用參數陣列值

程序內的程式碼必須將參數陣列視為一維陣列,它的每一個元素與 ParamArray 資料型別相同。

若要存取參數陣列的其中一個值

  1. 在程序程式碼中,在參數陣列名稱上呼叫 UBound 函式,以決定傳遞給參數陣列的陣列長度。

  2. 在程序程式碼的可執行陳述式中,在參數陣列名稱之後加上以括弧括住的註標 (Subscript)。 此註標應介於 0 與 UBound 所傳回的上限 (Upper Bound) 之間。

安全性注意事項安全性注意事項

只要處理可能是無限大的陣列,就會有導致應用程式內部容量滿溢的風險。 如果您接受來自呼叫程式碼的參數陣列,則應該測試其長度,並在其長度對於應用程式而言太大時採取適當的步驟。

範例

下列範例會定義具有參數陣列的程序,並將所有傳遞給參數陣列的陣列項目值輸出。

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

下列範例會顯示一般的 studentScores 呼叫。

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)

編譯程式碼

請確定 ParamArray 是參數清單中的最後一個參數,而且前面沒有參數宣告為 Optional。

請參閱

工作

HOW TO:呼叫使用不定數目參數的程序 (Visual Basic)

參考

ByVal (Visual Basic)

ParamArray (Visual Basic)

概念

程序參數和引數 (Visual Basic)

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

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

選擇性參數 (Visual Basic)

程序多載化 (Visual Basic)

Visual Basic 中的型別檢查

Visual Basic 中的陣列