Freigeben über


Optionale Parameter (Visual Basic)

Sie können angeben, dass ein Prozedurparameter optional ist und kein Argument angegeben werden muss, wenn die Prozedur aufgerufen wird. Optionale Parameter werden durch das Optional Schlüsselwort in der Prozedurdefinition angegeben. Es gelten die folgenden Regeln:

  • Jeder optionale Parameter in der Prozedurdefinition muss einen Standardwert angeben.

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

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

Die folgende Syntax zeigt eine Prozedurdeklaration mit einem optionalen Parameter:

Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)  

Aufrufen von Prozeduren mit optionalen Parametern

Wenn Sie eine Prozedur mit einem optionalen Parameter aufrufen, können Sie auswählen, ob das Argument angegeben werden soll. Wenn Sie dies nicht tun, verwendet die Prozedur den standardwert, der für diesen Parameter deklariert ist.

Wenn Sie ein oder mehrere optionale Argumente in der Argumentliste weglassen, verwenden Sie aufeinander folgende Kommas, um ihre Positionen zu markieren. Im folgenden Beispielaufruf werden die ersten und vierten Argumente, jedoch nicht die zweite oder dritte Argumente angegeben:

Sub name(argument 1, , , argument 4)  

Im folgenden Beispiel werden mehrere Aufrufe der MsgBox Funktion ausgeführt. MsgBox verfügt über einen erforderlichen Parameter und zwei optionale Parameter.

Der erste Aufruf von MsgBox liefert alle drei Argumente in der Reihenfolge, in der MsgBox sie definiert. Beim zweiten Aufruf wird nur das erforderliche Argument angegeben. Beim dritten und vierten Aufruf werden das erste und dritte Argument angegeben. Im dritten Aufruf geschieht dies über die Position, im vierten Aufruf über den Namen.

MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")

Bestimmen, ob ein optionales Argument vorhanden ist

Eine Prozedur kann zur Laufzeit nicht erkennen, ob ein angegebenes Argument ausgelassen wurde oder der aufrufende Code explizit den Standardwert angegeben hat. Wenn Sie diese Unterscheidung vornehmen müssen, können Sie einen unwahrscheinlichen Wert als Standard festlegen. Die folgende Prozedur definiert den optionalen Parameter officeund testet auf seinen Standardwert, um festzustellen, QJZob er im Aufruf weggelassen 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 bei dem optionalen Parameter um einen Verweistyp wie z. B. einen StringVerweistyp handelt, können Sie als Standardwert verwenden Nothing , vorausgesetzt, dies ist kein erwarteter Wert für das Argument.

Optionale Parameter und Überladung

Eine weitere Möglichkeit zum Definieren einer Prozedur mit optionalen Parametern ist die Verwendung von Überladungen. Wenn Sie über einen optionalen Parameter verfügen, können Sie zwei überladene Versionen der Prozedur definieren, eine, die den Parameter akzeptiert, und einen ohne parameter. Dieser Ansatz wird komplizierter, da sich die Anzahl optionaler Parameter erhöht. Der Vorteil ist jedoch, dass Sie absolut sicher sein können, ob das aufrufende Programm jedes optionale Argument bereitgestellt hat.

Siehe auch