Parameter — Tablice (Visual Basic)
Zwykle nie można wywołać procedury z więcej argumentów niż określa deklaracja procedury. Jeśli potrzebujesz nieokreślonej liczby argumentów, możesz zadeklarować tablicę parametrów, która umożliwia procedurze akceptowanie tablicy wartości dla parametru. Nie musisz znać liczby elementów w tablicy parametrów podczas definiowania procedury. Rozmiar tablicy jest określany indywidualnie przez każde wywołanie procedury.
Deklarowanie paramArray
Słowo kluczowe ParamArray służy do oznaczania tablicy parametrów na liście parametrów. Obowiązują następujące zasady:
Procedura może definiować tylko jedną tablicę parametrów i musi być ostatnim parametrem w definicji procedury.
Tablica parametrów musi być przekazywana przez wartość. Dobrym rozwiązaniem programistycznym jest jawne uwzględnienie słowa kluczowego ByVal w definicji procedury.
Tablica parametrów jest automatycznie opcjonalna. Jego wartość domyślna jest pustą jednowymiarową tablicą typu elementu tablicy parametrów.
Wszystkie parametry poprzedzające tablicę parametrów muszą być wymagane. Tablica parametrów musi być jedynym parametrem opcjonalnym.
Wywoływanie paramArray
Podczas wywoływania procedury definiującej tablicę parametrów można podać argument w dowolny z następujących sposobów:
Nic — oznacza to, że można pominąć argument ParamArray . W takim przypadku pusta tablica jest przekazywana do procedury. Jeśli jawnie przekażesz słowo kluczowe Nothing , tablica o wartości null zostanie przekazana do procedury i może spowodować wyjątek NullReferenceException, jeśli wywołana procedura nie sprawdzi tego warunku.
Lista dowolnych argumentów rozdzielonych przecinkami. Typ danych każdego argumentu musi być niejawnie konwertowany na
ParamArray
typ elementu.Tablica o tym samym typie elementu co typ elementu tablicy parametrów.
We wszystkich przypadkach kod w ramach procedury traktuje tablicę parametrów jako tablicę jednowymiarową z elementami tego samego typu danych co ParamArray
typ danych.
Ważne
Za każdym razem, gdy zajmujesz się tablicą, która może być przez czas nieokreślony duża, istnieje ryzyko przekroczenia pewnej wewnętrznej pojemności aplikacji. Jeśli akceptujesz tablicę parametrów, należy przetestować rozmiar tablicy, do której przekazano kod wywołujący. Wykonaj odpowiednie kroki, jeśli aplikacja jest zbyt duża. Aby uzyskać więcej informacji, zobacz Tablice.
Przykład
Poniższy przykład definiuje i wywołuje funkcję calcSum
. Modyfikator ParamArray
parametru args
umożliwia funkcji akceptowanie zmiennej liczby argumentów.
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
Poniższy przykład definiuje procedurę z tablicą parametrów i zwraca wartości wszystkich elementów tablicy przekazanych do tablicy parametrów.
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)