In Visual Basic kann der Parameter ParamArray verwendet werden, um eine variable Anzahl von Argumenten an eine Prozedur oder Funktion zu übergeben. Dies ist eine praktische Möglichkeit, Methoden mit einer nicht festen Anzahl von Parametern desselben Typs zu erstellen.
Sub ShowNumbers(ParamArray numbers() As Integer) For Each n As Integer In numbers Console.WriteLine(n) Next End Sub ' Aufrufe: ShowNumbers(1, 2, 3, 4) ShowNumbers() ' Aufruf ohne Argumente ist möglich
ParamArray und muss das letzte in der Liste sein.ParamArray werden immer als Array übergeben und können nicht als ByRef übergeben werden.ParamArray erlaubt einer Prozedur, eine unterschiedliche Anzahl von Parametern desselben Typs zu akzeptieren, während Überladung mehrere Methoden mit unterschiedlichen Signaturen erstellt.
Beispiel für Überladung:
Sub Add(a As Integer, b As Integer) ' ... End Sub Sub Add(a As Integer, b As Integer, c As Integer) ' ... End Sub
Wann zu verwenden:
ParamArray: wenn viele Parameter desselben Typs vorhanden sind.Frage: Kann eine Prozedur gleichzeitig ParamArray und andere Parameter enthalten, welche Einschränkungen gibt es bezüglich ihrer Reihenfolge?
Antwort: Ja, kann sie, aber ParamArray muss immer der letzte Parameter und darf nur einmal in der Funktionssignatur sein.
Beispiel für eine falsche Verwendung:
Sub Test(ParamArray x() As Integer, y As String) ' Kompilierfehler End Sub
Richtige Variante:
Sub Test(y As String, ParamArray x() As Integer) ' Korrekt End Sub
Geschichte
Eine Funktion zum Sammeln von Daten aus verschiedenen Quellen mit ParamArray wurde erstellt, aber in vielen Fällen wurden Arrays manuell übergeben. Der Entwickler bemerkte nicht, dass die Übergabe eines Arrays zu einem verschachtelten Array (Array von Arrays) führt, wodurch die Verarbeitung immer fehlerhaft war und die Datenberichterstattung verdorben wurden.
Geschichte
Für den universellen Aufbau von SQL-Abfragen wurde ein ParamArray von String-Argumenten verwendet, aber bei der Aktualisierung der Methode wurde ein erforderlicher Parameter nach ParamArray hinzugefügt. Das gesamte System hörte auf zu kompilieren.
Geschichte
Für die Überladung von Methoden mit unterschiedlichen Parametersets wurden sowohl ParamArray als auch Überladung verwendet. Dies führte zu Ambiguitätskonflikten: Der Compiler konnte nicht immer bestimmen, welche Variante der Methode aufgerufen werden sollte, da ParamArray auf mehrere Überladungen gleichzeitig passte.