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
Definieren Sie die Parameterliste in der Prozedurdeklaration wie gewohnt. Alle Parameter mit Ausnahme des letzten Parameters müssen erforderlich sein (nicht Optional (Visual Basic)).
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.
Fügen Sie hinter den Namen des Parameterarrays ein leeres Paar runde Klammern ein.
Stellen Sie hinter die leeren runden Klammern die übliche As-Klausel.
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
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.
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
Typüberprüfung in Visual Basic