![]() ![]() | ||
Usually, you cannot call a procedure with more arguments than the procedure declaration specifies. When you need an indefinite number of arguments, you can declare a parameter array, which allows a procedure to accept an array of values for an argument. You do not have to know the number of elements in the parameter array when you define the procedure. The array size is determined by each call to the procedure.
Note |
In Visual Basic .NET, ParamArray arguments are always passed using ByVal. All of the arguments in the array must be of the data type of the ParamArray argument. |
Here's an example; in this case, I'll pass different numbers of arguments to a Sub procedure, DisplayMessage. As you can see in the way DisplayMessage is declared, all arguments after the first one go into the parameter array, and I can loop over the parameter array to get all arguments passed to us (note that I use the UBound function, which we first saw in the previous chapter, to determine the upper bound of the array—and notice also that I'm passing a compete array of text strings to DisplayMessage with no problem):
Module Module1 Sub Main() DisplayMessage("First message:", "Hi") DisplayMessage("Second message:", "Hello", "there") Dim TextArray() As String = {"Hello", "from", "Visual", _ "Basic"} DisplayMessage("Third message:", TextArray) Resume Next End Sub Sub DisplayMessage(ByVal Title As String, ByVal ParamArray _ MessageText() As String) Dim intLoopIndex As Integer System.Console.WriteLine(Title) For intLoopIndex = 0 To UBound(MessageText) System.Console.WriteLine(MessageText(intLoopIndex)) Next intLoopIndex End Sub End Module
Here's what you see when this code runs:
First message: Hi Second message: Hello there Third message: Hello from Visual Basic
![]() ![]() | ||