Optionale Parameter (Visual Basic)

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.Wenn Sie dies nicht tun, verwendet die Prozedur den für den 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:

sub name(argument 1, , , argument 4)

Im folgenden Beispiel wird die MsgBox-Funktion mehrmals aufgerufen.MsgBox besitzt einen erforderlichen Parameter und zwei optionale Parameter.

Der erste Aufruf von MsgBox stellt alle drei Argumente in der Reihenfolge, in der sie definiert MsgBox.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

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 angegeben hat.

Siehe auch

Referenz

Optional (Visual Basic)

ParamArray (Visual Basic)

Konzepte

Prozeduren in Visual Basic

Parameter und Argumente von Prozeduren (Visual Basic)

Übergeben von Argumenten als Wert und als Verweis (Visual Basic)

Übergeben von Argumenten nach Position und Name (Visual Basic)

Parameterarrays (Visual Basic)

Prozedurüberladung (Visual Basic)