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


Практическое руководство. Определение процедуры с неопределенным числом параметров

Обновлен: Ноябрь 2007

Можно объявить массив параметров в качестве последней записи в списке параметров процедуры. Это позволяет процедуре принимать набор значений для этого параметра вместо одного значения. При определении процедуры необязательно указывать количество элементов в массиве параметров. Набор определяется индивидуально при каждом вызове процедуры. При каждом вызове может передаваться различное количество значений.

Дополнительные сведения см. в разделе Массивы параметров.

Определение процедуры, которая может принимать неопределенное число значений для последнего параметра

  1. В объявлении процедуры определите список параметров обычным способом. Все параметры, за исключением последнего, обязательны (не Optional (Visual Basic)).

  2. Укажите перед именем последнего параметра ключевое слово ByVal ParamArray. Этот параметр автоматически является необязательным. Не включайте ключевое слово Optional.

  3. Дополните имя массива параметров пустой парой скобок.

  4. После пустых скобок напишите обычное условие As.

  5. Не добавляйте после условия As значение по умолчанию. Значение по умолчанию для массива параметров — это пустой одномерный массив типа данных, указанных в условии As.

Работа со значениями массива параметров

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

Доступ к одному из значений массива параметров

  1. В коде процедуры определите длину массива, передаваемого в массив параметров, с помощью вызова метода Функция UBound (Visual Basic) для имени массива параметров.

  2. В исполняемом операторе в коде процедуры дополните имя массива параметров индексом в скобках. Этот индекс должен быть в диапазоне от 0 до верхней границы, возвращаемой UBound.

9z7h91e4.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

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

Пример

Следующий пример определяет процедуру с массивом параметров и выводит значения всех элементов массива, переданных массиву параметров.

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

В следующих примерах показаны типичные варианты вызова процедуры studentScores.

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)

Компиляция кода

Убедитесь, что ParamArray является последним параметром в списке, и ни один из предыдущих параметров не объявлен как Optional.

См. также

Задачи

Практическое руководство. Вызов процедуры, принимающей неопределенное число параметров

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

Параметры и аргументы процедуры

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

Передача аргумента по позиции и по имени

Необязательные параметры

Перегрузка процедур

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

Ссылки

ByVal

ParamArray

Другие ресурсы

Массивы в Visual Basic