Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn eine Prozedur über einen ParamArray-Parameter verfügt, können Sie keine überladene Version definieren, die eindimensionales Array für das Parameterarray verwendet. Weitere Informationen finden Sie unter "Implizite Überladungen für einen ParamArray-Parameter" in Überlegungen in Überladungsprozeduren.
So überladen Sie eine Prozedur, die eine variable Anzahl von Parametern verwendet
Vergewissern Sie sich, dass die Prozedur und die Logik beim Aufrufen des Codes mehr von überladenen Versionen als von einem
ParamArrayParameter profitieren. Weitere Informationen finden Sie unter Überlegungen zur Prozedurüberladung (Visual Basic) im Abschnitt „Overloads and ParamArrays“ (Überladungen und ParamArrays).Ermitteln Sie, welche Anzahl von angegebenen Werten die Prozedur im variablen Teil der Parameterliste akzeptieren soll. Dies könnte den Fall ohne Wert umfassen, und es könnte den Fall eines einzelnen eindimensionalen Arrays umfassen.
Schreiben Sie für jede zulässige Anzahl von angegebenen Werten eine Deklarationsanweisung vom Typ
SuboderFunction, die die entsprechende Parameterliste definiert. Verwenden Sie in dieser überladenen Version weder dasOptionalSchlüsselwort noch dasParamArraySchlüsselwort.In jeder Deklaration ist dem Schlüsselwort
SuboderFunctiondas Schlüsselwort Overloads voranzustellen.Schreiben Sie nach jeder Deklaration den Prozedurcode, der ausgeführt werden soll, wenn der aufrufende Code Werte bereitstellt, die der Parameterliste dieser Deklaration entsprechen.
Beenden Sie jede Prozedur entsprechend entweder mit der
End Sub- oder derEnd Function-Anweisung.
Beispiel
Das folgende Beispiel zeigt eine Prozedur, die mit einem ParamArray-Parameter definiert ist, 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 nicht testen, ob der aufrufende Code einen oder mehrere Werte für den ParamArray Parameter bereitgestellt hat, oder wenn ja, wie viele. Visual Basic übergibt die Steuerung an die Version, die der aufrufenden Argumentliste entspricht.
Kompilieren des Codes
Da eine Prozedur mit einem ParamArray Parameter einer Reihe ü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 zu Überladungsverfahren.
.NET Framework-Sicherheit
Wenn Sie mit einem Array umgehen, das unbegrenzt groß sein kann, besteht das Risiko, dass einige interne Kapazität Ihrer Anwendung überlaufen 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
- Vorgehensweisen
- Parameter und Argumente von Prozeduren
- Optionale Parameter
- Parameterarrays
- Prozedurüberladung
- Problembehandlungsverfahren
- So definieren Sie mehrere Versionen eines Verfahrens
- Anleitung: Aufrufen einer überladenen Prozedur
- Vorgehensweise: Überladen einer Prozedur, die optionale Parameter akzeptiert
- Überladungsauflösung