Gewusst wie: Überladen einer Prozedur mit einer unbestimmten Anzahl von Parametern (Visual Basic)
Wenn eine Prozedur über einen ParamArray (Visual Basic)-Parameter verfügt, können Sie keine überladene Version definieren, die ein eindimensionales Array für das Parameterarray akzeptiert.Weitere Informationen finden Sie im Abschnitt "Implizite Überladungen für ParamArray-Parameter" unter Überlegungen zur Prozedurüberladung (Visual Basic).
So überladen Sie eine Prozedur, die eine variable Anzahl von Parametern akzeptiert
Stellen Sie fest, ob die Prozedur- und Aufrufcodelogik von überladenen Versionen mehr profitiert als von einem ParamArray-Parameter.Siehe "Überladungen und ParamArrays" unter Überlegungen zur Prozedurüberladung (Visual Basic).
Bestimmen Sie, welche Anzahl von angegebenen Werten die Prozedur im variablen Teil der Parameterliste akzeptieren sollte.Hierbei sind der Fall keiner Wertangabe und der Fall eines einzelnen eindimensionalen Arrays zu berücksichtigen.
Schreiben Sie für jede akzeptable Anzahl angegebener Werte eine Sub-Deklarationsanweisung oder Function-Deklarationsanweisung, die die entsprechende Parameterliste definiert.Verwenden Sie weder das Optional-Schlüsselwort noch das ParamArray-Schlüsselwort in dieser überladenen Version.
Stellen Sie in jeder Deklaration das Overloads (Visual Basic)-Schlüsselwort dem Sub-Schlüsselwort bzw. dem Function-Schlüsselwort voran.
Geben Sie nach jeder Deklaration den Prozedurcode ein, der ausgeführt werden soll, wenn im Aufrufcode Werte angegeben werden, die der Parameterliste der betreffenden Deklaration entsprechen.
Beenden Sie jede Prozedur nach Bedarf mit der End Sub-Anweisung oder der End Function-Anweisung.
Beispiel
Im folgenden Beispiel wird eine mit einem ParamArray (Visual Basic)-Parameter definierte Prozedur gezeigt und danach ein entsprechender Satz überladener Prozeduren.
Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.
Sie können eine solche Prozedur nicht mit einer Parameterliste überladen, die ein eindimensionales Array für das Parameterarray akzeptiert.Sie können jedoch die Signaturen der anderen impliziten Überladungen verwenden.Die folgenden Deklarationen verdeutlichen dies.
' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)
Im Code der überladenen Versionen muss nicht überprüft werden, ob der Aufrufcode einen oder mehrere Werte für den ParamArray-Parameter angegeben hat, und wenn dies der Fall war, wie viele Werte bereitgestellt wurden.Visual Basic übergibt die Steuerung der Version, zu der die angegebene Argumentliste passt.
Kompilieren des Codes
Weil eine Prozedur mit einem ParamArray-Parameter einer Gruppe von überladenen Versionen entspricht, kann eine solche Prozedur nicht mit einer Parameterliste überladen werden, die einer dieser impliziten Überladungen entspricht.Weitere Informationen hierzu finden Sie unter Überlegungen zur Prozedurüberladung (Visual Basic).
Sicherheit
Wenn Sie mit einem Array arbeiten, das unendlich groß sein kann, besteht die Gefahr, dass eine interne Kapazität der Anwendung überschritten wird.Wenn Sie ein Parameterarray akzeptieren, müssen Sie die Länge des Arrays überprüfen, das vom Aufrufcode übergeben wird, und die entsprechenden Maßnahmen ergreifen, wenn es für die Anwendung zu groß ist.
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 optionalen Parametern (Visual Basic)
Konzepte
Parameter und Argumente von Prozeduren (Visual Basic)
Optionale Parameter (Visual Basic)
Parameterarrays (Visual Basic)