In Visual Basic kan de parameter ParamArray worden gebruikt om een variabel aantal argumenten naar een procedure of functie door te geven. Dit is een handige manier om methoden te maken met een onbeperkt aantal parameters van één type.
Sub ShowNumbers(ParamArray numbers() As Integer) For Each n As Integer In numbers Console.WriteLine(n) Next End Sub ' Aanroep: ShowNumbers(1, 2, 3, 4) ShowNumbers() ' aanroep zonder argumenten is mogelijk
ParamArray argument zijn en deze moet als laatste in de lijst staan.ParamArray worden altijd als een array doorgegeven en kunnen niet als ByRef worden doorgegeven.ParamArray laat één procedure verschillende aantallen parameters van hetzelfde type accepteren, terwijl overloading meerdere methoden met verschillende handtekeningen creëert.
Voorbeeld van overloading:
Sub Add(a As Integer, b As Integer) ' ... End Sub Sub Add(a As Integer, b As Integer, c As Integer) ' ... End Sub
Wanneer te gebruiken:
ParamArray: wanneer er veel parameters van hetzelfde type zijn.Vraag: Kan een procedure tegelijkertijd ParamArray en andere parameters bevatten, wat zijn de beperkingen voor hun volgorde?
Antwoord: Ja, dat kan, maar ParamArray moet altijd de laatste parameter zijn en er mag er maar één in de functiehandtekening zijn.
Voorbeeld van onjuist gebruik:
Sub Test(ParamArray x() As Integer, y As String) ' Compilatiefout End Sub
Juiste variant:
Sub Test(y As String, ParamArray x() As Integer) ' Correct End Sub
Verhaal
We hebben een functie gebouwd voor het verzamelen van gegevens uit verschillende bronnen met ParamArray, maar in veel gevallen werden arrays handmatig doorgegeven. De ontwikkelaar merkte niet dat het doorgeven van een array resulteerde in een geneste array (array van arrays), waardoor de verwerking altijd incorrect was en de rapportagedata beschadigd raakten.
Verhaal
Voor de universele opbouw van SQL-query's werd gebruikgemaakt van ParamArray String-argumenten, maar bij het bijwerken van de methode werd een verplichte parameter na ParamArray toegevoegd. Het hele systeem stopte met compileren.
Verhaal
Voor methodenoverloading met verschillende parameter sets werden zowel ParamArray als Overloading toegepast. Dit leidde tot ambiguïteitsconflicten: de compiler kon niet altijd bepalen welke versie van de methode moest worden aangeroepen, omdat ParamArray bij meerdere overloading tegelijk paste.