Sdílet prostřednictvím


Pole parametrů (Visual Basic)

Obvykle nelze volat proceduru s více argumenty, než určuje deklarace procedury. Pokud potřebujete neomezený počet argumentů, můžete deklarovat pole parametrů, což umožňuje proceduru přijmout pole hodnot pro parametr. Při definování procedury nemusíte znát počet prvků v poli parametrů. Velikost pole je určena jednotlivě jednotlivými voláními procedury.

Deklarace parametru ParamArray

Pomocí klíčového slova ParamArray označíte pole parametrů v seznamu parametrů. Platí následující pravidla:

  • Procedura může definovat pouze jedno pole parametrů a musí to být poslední parametr v definici procedury.

  • Pole parametrů musí být předáno hodnotou. V definici procedury je vhodné explicitně zahrnout klíčové slovo ByVal .

  • Pole parametrů je automaticky volitelné. Výchozí hodnota je prázdné jednorozměrné pole typu elementu pole parametrů.

  • Všechny parametry před polem parametrů musí být povinné. Pole parametrů musí být jediným volitelným parametrem.

Volání paramArray

Při volání procedury, která definuje pole parametrů, můžete argument zadat jedním z následujících způsobů:

  • Nic – to znamená, že můžete vynechat argument ParamArray . V tomto případě se do procedury předá prázdné pole. Pokud explicitně předáte klíčové slovo Nothing , předá se do procedury pole null a může vést k nullReferenceException, pokud volána procedura nekontroluje tuto podmínku.

  • Seznam libovolného počtu argumentů oddělených čárkami. Datový typ každého argumentu musí být implicitně konvertibilní na ParamArray typ prvku.

  • Pole se stejným typem elementu jako typ elementu pole parametrů.

Ve všech případech kód v rámci procedury zpracovává pole parametrů jako jednorozměrné pole s prvky stejného datového ParamArray typu jako datový typ.

Důležité

Kdykoli se zabýváte polem, které může být neomezeně velké, hrozí riziko, že dojde k překročení určité interní kapacity vaší aplikace. Pokud přijmete pole parametrů, měli byste otestovat velikost pole, které mu volající kód předal. Pokud je aplikace příliš velká, proveďte příslušné kroky. Další informace naleznete v tématu Pole.

Příklad

Následující příklad definuje a volá funkci calcSum. ParamArray Modifikátor parametru args umožňuje funkci přijmout proměnný počet argumentů.

Module Module1

    Sub Main()
        ' In the following function call, CalcSum's local variables
        ' are assigned the following values: args(0) = 4, args(1) = 3,
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = CalcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum
        ' displayed by the following statements is 0.
        returnedValue = CalcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    Public Function CalcSum(ByVal ParamArray args() As Double) As Double
        CalcSum = 0
        If args.Length <= 0 Then Exit Function
        For i As Integer = 0 To UBound(args, 1)
            CalcSum += args(i)
        Next i
    End Function

End Module

Následující příklad definuje proceduru s polem parametrů a vypíše hodnoty všech prvků pole předaných do pole parametrů.

Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
    Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
    ' Use UBound to determine largest subscript of the array.
    For i As Integer = 0 To UBound(scores, 1)
        Debug.WriteLine("Score " & i & ": " & scores(i))
    Next i
End Sub
Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)

Viz také