Gewusst wie: Überladen einer Prozedur mit optionalen Parametern (Visual Basic)

Wenn eine Prozedur einen oder mehrere Optional (Visual Basic)-Parameter enthält, können Sie eine überladene Version definieren, die jeder der impliziten Überladungen entspricht. Weitere Informationen finden Sie im Abschnitt "Implizite Überladungen für optionale Parameter" unter Überlegungen zur Prozedurüberladung (Visual Basic).

Ein optionaler Parameter

So überladen Sie eine Prozedur, die einen optionalen Parameter akzeptiert

  1. Schreiben Sie eine Sub-Deklarationsanweisung oder eine Function-Deklarationsanweisung, die den optionalen Parameter in der Parameterliste enthält. Verwenden Sie das Optional-Schlüsselwort nicht in dieser überladenen Version.

  2. Stellen Sie dem Sub-Schlüsselwort oder dem Function-Schlüsselwort das Overloads (Visual Basic)-Schlüsselwort voran.

  3. Schreiben Sie den Prozedurcode, der ausgeführt werden soll, wenn das optionale Argument im Aufrufcode nicht angegeben wird.

  4. Beenden Sie die Prozedur nach Bedarf mit der End Sub-Anweisung oder der End Function-Anweisung.

  5. Schreiben Sie eine zweite Deklarationsanweisung, die sich von der ersten Deklaration nur dadurch unterscheidet, dass der optionale Parameter nicht in der Parameterliste angegeben wird.

  6. Schreiben Sie den Prozedurcode, der ausgeführt werden soll, wenn das optionale Argument im Aufrufcode nicht angegeben wird. Beenden Sie die Prozedur nach Bedarf mit der End Sub-Anweisung oder der End Function-Anweisung.

    Das folgende Beispiel veranschaulicht eine Prozedur, die mit einem optionalen Parameter definiert ist, eine äquivalente Gruppe mit zwei überladenen Prozeduren sowie Beispiele für ungültige und gültige überladene Versionen.

    Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
    
    ' The preceding definition is equivalent to the following two overloads.
    ' Overloads Sub q(ByVal b As Byte)
    ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
    
    ' Therefore, the following overload is not valid because the signature is already in use.
    ' Overloads Sub q(ByVal c As Byte, ByVal k As Long)
    ' The following overload uses a different signature and is valid.
    Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
    

Mehrere optionale Parameter

Für eine Prozedur mit mehreren optionalen Parametern benötigen Sie normalerweise mehr als zwei überladene Versionen. Wenn eine Prozedur beispielsweise zwei optionale Parameter enthält und im Aufrufcode jeder dieser Parameter unabhängig voneinander angegeben oder nicht angegeben werden kann, dann sind vier überladene Versionen erforderlich, nämlich eine Version für jede mögliche Kombination angegebener Argumente.

Mit zunehmender Anzahl von optionalen Parametern wird auch das Überladen komplexer. Sofern es keine nicht akzeptablen Kombinationen angegebener Argumente gibt, sind für N optionale Parameter 2 ^ N überladene Versionen erforderlich. Je nach Art der Prozedur, kann der zusätzliche Aufwand, den die Definition sämtlicher überladener Versionen bedeutet, durch die Verständlichkeit der Logik gerechtfertigt werden.

So überladen Sie eine Prozedur, die mehrere optionale Parameter akzeptiert

  1. Legen Sie fest, welche Kombinationen angegebener optionaler Argumente in Anbetracht der Logik der Prozedur akzeptabel sind. Eine unannehmbare Kombination könnte entstehen, wenn ein optionaler Parameter von einem anderen abhängt. Wenn ein Parameter beispielsweise den Namen des Ehegatten und ein anderer das Alter des Ehegatten enthalten soll, dann ist eine Kombination von Argumenten ungültig, die das Alter, aber nicht den Namen angibt.

  2. Schreiben Sie für jede akzeptable Kombination angegebener Werte eine Sub-Deklarationsanweisung bzw. eine Function-Deklarationsanweisung, die die entsprechende Parameterliste definiert. Verwenden Sie das Optional-Schlüsselwort nicht.

  3. Stellen Sie in jeder Deklaration das Overloads (Visual Basic)-Schlüsselwort dem Sub-Schlüsselwort bzw. dem Function-Schlüsselwort voran.

  4. Geben Sie nach jeder Deklaration den Prozedurcode ein, der ausgeführt werden soll, wenn im Aufrufcode eine Argumentliste angegeben wird, die der Parameterliste der betreffenden Deklaration entspricht.

  5. Beenden Sie jede Prozedur nach Bedarf mit der End Sub-Anweisung oder der End Function-Anweisung.

Siehe auch

Aufgaben

Problembehandlung bei Prozeduren (Visual Basic)

Gewusst wie: Definieren mehrerer Versionen einer Prozedur (Visual Basic)

Gewusst wie: Aufrufen einer überladenen Prozedur (Visual Basic)

Gewusst wie: Überladen einer Prozedur mit einer unbestimmten Anzahl von Parametern (Visual Basic)

Konzepte

Prozeduren in Visual Basic

Parameter und Argumente von Prozeduren (Visual Basic)

Optionale Parameter (Visual Basic)

Parameterarrays (Visual Basic)

Prozedurüberladung (Visual Basic)

Überladungsauflösung (Visual Basic)