Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Parameterarrays (Visual Basic)

Normalerweise kann eine Prozedur nur mit der in der Prozedurdeklaration angegebenen Anzahl an Argumenten aufgerufen werden. Wenn jedoch eine unbestimmte Anzahl von Argumenten erforderlich ist, können Sie ein Parameterarray deklarieren. Dadurch akzeptiert die Prozedur ein Array von Werten für einen Parameter. Beim Definieren der Prozedur müssen Sie die Anzahl der Elemente im Parameterarray nicht kennen. Die Arraygröße wird durch die einzelnen Aufrufe der Prozedur jeweils individuell festgelegt.

Um auf ein Parameterarray in der Parameterliste hinzudeuten, verwenden Sie das ParamArray (Visual Basic)-Schlüsselwort. Dabei gelten folgende Regeln:

  • Eine Prozedur kann nur 1 Parameterarray definieren, und es muss sich um den letzten Parameter in der Prozedurdefinition handeln.

  • Das Parameterarray muss durch Wert übergeben werden. Eine gute Lösung beim Programmieren ist es, das ByVal (Visual Basic)-Schlüsselwort explizit in die Prozedurdefinition einzufügen.

  • Das Parameterarray ist automatisch optional. Sein Standardwert ist ein leeres, eindimensionales Array mit dem Elementtyp des Parameterarrays.

  • Dem Parameterarray dürfen nur erforderliche Parameter vorangehen. Als optionaler Parameter ist nur das Parameterarray zulässig.

Wenn Sie eine Prozedur aufrufen, die ein Parameterarray definiert, können Sie das Argument auf eine der folgenden Weisen angeben:

  • Nothing. Das ParamArray (Visual Basic)-Argument kann weggelassen werden. In diesem Fall wird der Prozedur ein leeres Array übergeben. Dasselbe kann auch durch Übergabe des Nothing (Visual Basic)-Schlüsselworts erreicht werden.

  • Eine Liste mit einer beliebigen Anzahl von Argumenten, die durch Kommas voneinander getrennt sind. Der Datentyp der einzelnen Argumente muss implizit in den ParamArray-Elementtyp konvertiert werden können.

  • Ein Array mit dem gleichen Elementtyp wie der Elementtyp des Parameterarrays.

In jedem Fall muss der Code innerhalb der Prozedur das Parameterarray als eindimensionales Array behandeln, dessen Elemente jeweils denselben Datentyp haben wie ParamArray.

Sicherheitshinweis 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 annehmen, sollten Sie die Größe des Arrays ermitteln, das der Aufrufcode an das Parameterarray übergeben hat. Ergreifen Sie entsprechende Schritte, wenn das Array für die Anwendung zu groß ist. Weitere Informationen finden Sie unter Arrays in Visual Basic.

Das folgende Beispiel definiert und ruft die Funktion calcSuman. Der ParamArray-Modifizierer für den Parameter args aktiviert die Funktion eine variable Anzahl von Argumenten akzeptieren.


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


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



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)


Anzeigen: