Gewusst wie: Überladen einer Prozedur mit optionalen Parametern (Visual Basic)
Wenn eine Prozedur über einen oder mehrere Optionale Parameter verfügt, können Sie keine überladene Version definieren, die einer ihrer impliziten Überladungen entspricht. Weitere Informationen finden Sie unter Überlegungen zum Überladen von Prozeduren im Abschnitt „Implizite Überladungen für optionale Parameter“.
Ein optionaler Parameter
So überladen Sie eine Prozedur, die einen optionalen Parameter akzeptiert
Schreiben Sie eine
Sub
- oderFunction
-Deklarationsanweisung, die den optionalen Parameter in der Parameterliste enthält. Verwenden Sie in dieser überladenen Version nicht das SchlüsselwortOptional
.Stellen Sie dem Schlüsselwort
Sub
oderFunction
das Schlüsselwort Overloads voran.Schreiben Sie den Prozedurcode, der ausgeführt werden soll, wenn der aufrufende Code das optionale Argument bereitstellt.
Beenden Sie die Prozedur entsprechend mit der Anweisung
End Sub
oderEnd Function
.Schreiben Sie eine zweite Deklarationsanweisung, die mit der ersten Deklaration identisch ist, mit der Ausnahme, dass sie den optionalen Parameter nicht in der Parameterliste enthält.
Schreiben Sie den Prozedurcode, der ausgeführt werden soll, wenn der aufrufende Code das optionale Argument nicht bereitstellt. Beenden Sie die Prozedur entsprechend mit der Anweisung
End Sub
oderEnd Function
.Das folgende Beispiel zeigt eine Prozedur, die mit einem optionalen Parameter definiert ist, einen entsprechenden Satz von zwei überladenen Prozeduren sowie schließlich sowohl Beispiele für ungültige als auch für 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 mehr als einem optionalen Parameter benötigen Sie normalerweise mehr als zwei überladene Versionen. Wenn z. B. zwei optionale Parameter vorhanden sind und der aufrufende Code jeden davon unabhängig voneinander bereitstellen oder weglassen kann, benötigen Sie vier überladene Versionen, eine für jede mögliche Kombination der angegebenen Argumente.
Mit zunehmender Anzahl optionaler Parameter nimmt die Komplexität des Überladens zu. Wenn nicht einige Kombinationen der angegebenen Argumente nicht akzeptabel sind, benötigen Sie für N optionale Parameter 2 ^ N überladene Versionen. Abhängig von der Art der Prozedur stellen Sie vielleicht fest, dass die Klarheit der Logik den zusätzlichen Aufwand zum Definieren all dieser überladenen Versionen rechtfertigt.
So überladen Sie eine Prozedur, die mehr als einen optionalen Parameter akzeptiert
Bestimmen Sie, welche Kombinationen der bereitgestellten optionalen Argumente für die Logik der Prozedur akzeptabel sind. Eine inakzeptable Kombination kann auftreten, wenn ein optionaler Parameter von einem anderen abhängt. Wenn beispielsweise ein Parameter den Namen einer Person akzeptiert und ein anderer das Alter der Person, ist eine Kombination von Argumenten, die das Alter angibt, den Namen aber auslässt, inakzeptabel.
Schreiben Sie für jede akzeptable Kombination angegebener optionaler Argumente eine
Sub
- oderFunction
-Deklarationsanweisung, die die entsprechende Parameterliste definiert. Verwenden Sie nicht das SchlüsselwortOptional
.Stellen Sie in jeder Deklaration dem Schlüsselwort
Sub
oderFunction
das Schlüsselwort Overloads voran.Schreiben Sie nach jeder Deklaration den Prozedurcode, der ausgeführt werden soll, wenn der aufrufende Code eine Argumenteliste bereitstellt, die der Parameterliste dieser Deklaration entspricht.
Beenden Sie jede Prozedur entsprechend mit der Anweisung
End Sub
oderEnd Function
.
Weitere Informationen
- Vorgehensweisen
- Parameter und Argumente von Prozeduren
- Optionale Parameter
- Parameterarrays
- Prozedurüberladung
- Problembehandlung bei Prozeduren
- Vorgehensweise: Definieren mehrerer Versionen einer Prozedur
- Vorgehensweise: Aufrufen einer überladenen Prozedur
- Vorgehensweise: Überladen einer Prozedur mit einer unbestimmten Anzahl von Parametern
- Überladungsauflösung