Gewusst wie: Definieren einer Prozedur mit einer unbestimmten Anzahl von Parametern

Aktualisiert: November 2007

Sie können ein Parameterarray als letzten Eintrag in der Parameterliste einer Prozedur deklarieren. Dies ermöglicht der Prozedur, anstatt eines einzelnen Werts eine Gruppe von Werten für diesen Parameter zu akzeptieren. Bei der Definition der Prozedur müssen Sie die Anzahl der Werte in der Gruppe nicht kennen. Die Gruppe wird durch jeden Aufruf der Prozedur individuell festgelegt; jeder Aufruf kann eine andere Anzahl von Werten übergeben.

Weitere Informationen hierzu finden Sie unter Parameterarrays.

So definieren Sie eine Prozedur, die eine unbestimmte Anzahl von Werten für ihren letzten Parameter akzeptieren kann

  1. Definieren Sie die Parameterliste in der Prozedurdeklaration wie gewohnt. Alle Parameter mit Ausnahme des letzten Parameters müssen erforderlich sein (nicht Optional (Visual Basic)).

  2. Stellen Sie die ByVal ParamArray-Schlüsselwörter vor den Namen des letzten Parameters. Dieser Parameter ist automatisch optional. Fügen Sie das Optional-Schlüsselwort nicht ein.

  3. Fügen Sie hinter den Namen des Parameterarrays ein leeres Paar runde Klammern ein.

  4. Stellen Sie hinter die leeren runden Klammern die übliche As-Klausel.

  5. Fügen Sie hinter der As-Klausel keinen Standardwert ein. Der Standardwert des Parameterarrays ist automatisch ein leeres eindimensionales Array des Datentyps, den Sie in der As-Klausel angegeben haben.

Arbeiten mit den Werten eines Parameterarrays

Der Code innerhalb der Prozedur muss das Parameterarray als eindimensionales Array behandeln, dessen Elemente jeweils demselben Datentyp angehören, wie ParamArray.

So greifen Sie auf einen der Werte eines Parameterarrays zu

  1. Legen Sie im Prozedurcode die Länge des Arrays fest, das an das Parameterarray übergeben wird. Rufen Sie dazu die UBound-Funktion (Visual Basic) am Namen des Parameterarrays auf.

  2. Fügen Sie in einer ausführbaren Anweisung des Prozedurcodes hinter dem Namen des Parameterarrays einen Feldindex in runden Klammern ein. Dieser Feldindex sollte zwischen 0 (null) und der Obergrenze liegen, die von UBound zurückgegeben wird.

Sicherheitshinweis:

Wenn Sie mit einem Array arbeiten, das unendlich groß sein kann, besteht die Gefahr, dass eine interne Kapazität der Anwendung überschritten wird. Wenn Sie ein Parameterarray vom Aufrufcode akzeptieren, müssen Sie seine Länge testen und entsprechende Maßnahmen ergreifen, wenn es für Ihre Anwendung zu groß ist.

Beispiel

Im folgenden Beispiel wird eine Prozedur mit einem Parameterarray definiert. Diese Prozedur gibt die Werte aller Arrayelemente zurück, die an das Parameterarray übergeben wurden.

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

Die folgenden Beispiele zeigen typische Aufrufe von 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)

Kompilieren des Codes

Stellen Sie sicher, dass ParamArray der letzte Parameter in der Parameterliste ist und dass keiner der vorhergehenden Parameter als Optional deklariert ist.

Siehe auch

Aufgaben

Gewusst wie: Aufrufen einer Prozedur mit einer unbestimmten Anzahl von Parametern

Konzepte

Parameter und Argumente von Prozeduren

Übergeben von Argumenten als Wert und als Verweis

Argumentübergabe nach Position und Namen

Optionale Parameter

Prozedurüberladung

Typüberprüfung in Visual Basic

Referenz

ByVal

ParamArray

Weitere Ressourcen

Arrays in Visual Basic