Поделиться через


Массивы параметров (Visual Basic)

Обычно в вызове процедуры не может быть больше аргументов, чем в ее объявлении. Если точное число аргументов, которые предстоит использовать, неизвестно, то можно объявить массив параметров, который позволяет процедуре принять в качестве параметра массив значений. При определении процедуры необязательно указывать количество элементов в массиве параметров. Размер массива определяется заново при каждом вызове процедуры.

Объявление ParamArray

Ключевое слово ParamArray (Visual Basic) используется для обозначения массива параметров в списке параметров. Действуют следующие правила.

  • Процедура может определять только один массив параметров, и он должен быть последним параметром в определении процедуры.

  • Массив параметров должен передаваться по значению. Рекомендуется включать явным образом ключевое слово ByVal (Visual Basic) в определение процедуры.

  • Массив параметров всегда является необязательным. По умолчанию его значением является пустой одномерный массив с заданным для массива параметров типом элемента массива.

  • Все параметры, предшествующие в списке массиву параметров, должны быть обязательными. Массив параметров должен быть единственным опциональным параметром.

Дополнительные сведения см. в разделе Практическое руководство. Определение процедуры с неопределенным числом параметров (Visual Basic).

Вызов ParamArray

При вызове процедуры, определяющей массив параметров, можно указать аргумент одним из следующих способов:

  • Ничего, т.е. опустить аргумент ParamArray (Visual Basic). В этом случае процедуре передается пустой массив. Такой же результат дает использование ключевого слова Nothing (Visual Basic).

  • Список из неопределенного числа аргументов, разделенных запятыми. Тип данных каждого из аргументов должен неявным образом преобразовываться в тип элемента ParamArray.

  • Массив с элементами того же типа, что и в массиве параметров.

Во всех случаях код в процедуре должен обрабатывать массив параметров как одномерный массив, каждый элемент которого имеет тот же тип данных, что и ParamArray.

Дополнительные сведения см. в разделе Практическое руководство. Вызов процедуры, принимающей неопределенное число параметров (Visual Basic).

Примечание о безопасностиПримечание по безопасности

При работе с неограниченно большим массивом есть риск переполнения некоторой внутренней емкости приложения.Если принимается массив параметров, то следует проверить размер массива, переданного вызывающим кодом.Предпринять соответствующие действия, если он слишком велик для приложения.Дополнительные сведения см. в разделе Массивы в Visual Basic.

Пример

Описание

В следующем примере определяется и вызывается функция calcSum. Модификатор ParamArray для параметра args позволяет функции принять переменное число аргументов.

Код

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

См. также

Ссылки

Optional (Visual Basic)

UBound

Основные понятия

Процедуры в Visual Basic

Параметры и аргументы процедуры (Visual Basic)

Передача аргументов по значению и по ссылке (Visual Basic)

Передача аргументов по позиции и по имени (Visual Basic)

Необязательные параметры (Visual Basic)

Перегрузка процедур (Visual Basic)

Проверка типов в Visual Basic

Массивы в Visual Basic