Teilen über


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

Wenn eine Prozedur über einen Parameter vom Typ ParamArray verfügt, können Sie keine überladene Version definieren, die ein eindimensionales Array für das Parameterarray verwendet. Weitere Informationen finden Sie unter Überlegungen zur Prozedurüberladung (Visual Basic) im Abschnitt „Implicit Overloads for a ParamArray Parameter“ (Implizite Überladungen für einen ParamArray-Parameter).

So überladen Sie eine Prozedur mit einer variablen Anzahl von Parametern

  1. Vergewissern Sie sich, dass die Prozedur und die Logik des aufrufenden Codes mehr von überladenen Versionen als von einem ParamArray-Parameter profitieren. Weitere Informationen finden Sie unter Überlegungen zur Prozedurüberladung (Visual Basic) im Abschnitt „Overloads and ParamArrays“ (Überladungen und ParamArrays).

  2. Bestimmen Sie, welche Anzahl von angegebenen Werten die Prozedur im variablen Teil der Parameterliste akzeptieren soll. Dies kann den Fall, dass kein Wert vorhanden ist, sowie den Fall einschließen, dass es sich um ein eindimensionales Array handelt.

  3. Schreiben Sie für jede zulässige Anzahl von angegebenen Werten eine Deklarationsanweisung vom Typ Sub oder Function, die die entsprechende Parameterliste definiert. Verwenden Sie in dieser überladenen Version weder das Schlüsselwort Optional noch das Schlüsselwort ParamArray.

  4. Stellen Sie in jeder Deklaration dem Schlüsselwort Sub oder Function das Schlüsselwort Overloads voran.

  5. Schreiben Sie nach jeder Deklaration den Prozedurcode, der ausgeführt werden soll, wenn der aufrufende Code Werte bereitstellt, die der Parameterliste dieser Deklaration entsprechen.

  6. Beenden Sie jede Prozedur entsprechend mit der Anweisung End Sub oder End Function.

Beispiel

Das folgende Beispiel zeigt eine mit einem ParamArray-Parameter definierte Prozedur und dann einen entsprechenden 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 verwendet. Sie können jedoch die Signaturen der anderen impliziten Überladungen verwenden. Die folgenden Deklarationen veranschaulichen 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)

Der Code in den überladenen Versionen muss weder testen, ob der aufrufende Code einen oder mehrere Werte für den ParamArray-Parameter angegeben hat, noch muss er ihre Anzahl ermitteln, sofern welche angegeben wurden. Visual Basic übergibt die Steuerung an die Version, die der Liste mit aufrufenden Argumenten entspricht.

Kompilieren des Codes

Da eine Prozedur mit einem ParamArray-Parameter einem Satz überladener Versionen entspricht, können Sie eine solche Prozedur nicht mit einer Parameterliste überladen, die einer dieser impliziten Überladungen entspricht. Weitere Informationen finden Sie unter Überlegungen zur Prozedurüberladung (Visual Basic).

.NET Framework-Sicherheit

Wenn Sie ein Array verwenden, das unbegrenzt groß sein kann, besteht das Risiko, dass die interne Kapazität Ihrer Anwendung überschritten wird. Wenn Sie ein Parameterarray akzeptieren, sollten Sie die Länge des Arrays testen, das der aufrufende Code übergeben hat, und die entsprechenden Schritte ausführen, wenn es für Ihre Anwendung zu groß ist.

Siehe auch