Optionale Parameter

Aktualisiert: November 2007

Sie können angeben, dass ein Prozedurparameter optional ist und in Aufrufen der Prozedur kein Argument dafür bereitgestellt werden muss. Optionale Parameter werden in der Prozedurdefinition durch das Optional-Schlüsselwort gekennzeichnet. Dabei gelten folgende Regeln:

  • Für jeden optionalen Parameter in der Prozedurdefinition muss ein Standardwert angegeben werden.

  • Der Standardwert für einen optionalen Parameter muss ein konstanter Ausdruck sein.

  • Jeder Parameter, der in der Prozedurdefinition auf einen optionalen Parameter folgt, muss ebenfalls optional sein.

Die folgende Syntax zeigt eine Prozedurdeklaration mit einem optionalen Parameter:

Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)

Aufrufprozeduren mit optionalen Parametern

Wenn eine Prozedur mit einem optionalen Parameter aufgerufen wird, können Sie entscheiden, ob das Argument bereitgestellt werden soll. Wird das Argument nicht bereitgestellt, verwendet die Prozedur den für diesen Parameter deklarierten Standardwert.

Wenn Sie in der Argumentliste eines oder mehrere optionale Argumente auslassen, werden deren Positionen durch aufeinanderfolgende Kommas markiert. Im folgenden Beispielaufruf werden das erste und das vierte Argument bereitgestellt, das zweite und dritte jedoch nicht:

Call sub name(argument 1, , , argument 4)

Bestimmen, ob ein optionales Argument vorhanden ist

Prozeduren können zur Laufzeit nicht feststellen, ob ein bestimmtes Argument ausgelassen oder der Standardwert durch den Aufrufcode explizit bereitgestellt wurde. Wenn diese Unterscheidung wichtig ist, sollten Sie einen unwahrscheinlichen Standardwert festlegen. In der folgenden Prozedur wird der optionale office-Parameter definiert und anschließend überprüft, ob sein Standardwert QJZ im Aufruf ausgelassen wurde:

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

Wenn es sich beim optionalen Parameter um einen Verweistyp wie String handelt, kann Nothing als Standardwert verwendet werden, sofern dieser kein zu erwartender Wert für das Argument ist.

Optionale Parameter und Überladen

Eine weitere Möglichkeit, eine Prozedur mit optionalen Parametern zu definieren, ist das Überladen. Wenn ein optionaler Parameter vorhanden ist, können Sie zwei überladene Versionen der Prozedur definieren, eine mit und eine ohne Parameter. Mit steigender Anzahl an optionalen Parametern wird dieses Konzept jedoch komplizierter. Allerdings hat es den Vorteil, dass Sie immer genau wissen, ob das aufrufende Programm jedes optionale Argument bereitgestellt hat.

Siehe auch

Aufgaben

Gewusst wie: Definieren optionaler Parameter für eine Prozedur

Gewusst wie: Aufrufen einer Prozedur mit optionalen Parametern

Gewusst wie: Bestimmen, ob ein optionaler Parameter angegeben wurde

Konzepte

Prozeduren in Visual Basic

Parameter und Argumente von Prozeduren

Übergeben von Argumenten als Wert und als Verweis

Argumentübergabe nach Position und Namen

Parameterarrays

Prozedurüberladung

Referenz

Optional (Visual Basic)

ParamArray