Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если процедура имеет параметр ParamArray, вы не можете определить перегруженную версию, принимающую одномерный массив вместо параметра ParamArray. Дополнительные сведения см. в разделе "Неявные перегрузки для параметра ParamArray" в разделе "Рекомендации в процедурах перегрузки".
Перегрузка процедуры, которая принимает переменное число параметров
Убедитесь, что процедура и логика вызова кода получают больше преимуществ от перегруженных версий, чем от параметра. См. "Перегрузки и ParamArrays" в рекомендациях по перегрузке процедур.
Определите количество предоставленных значений, которые должна принимать процедура в переменной части списка параметров. Это может включать случай отсутствия значения и случай одного одномерного массива.
Для каждого допустимого числа указанных значений укажите
Sub
илиFunction
оператор объявления, который определяет соответствующий список параметров. Не используйте ни ключевое словоOptional
, ниParamArray
в этой перегруженной версии.В каждом объявлении перед каждым ключевым словом
Sub
илиFunction
необходимо использовать ключевое слово Перегрузки.После каждого объявления напишите код процедуры, который должен выполняться, когда вызывающий код предоставляет значения, соответствующие списку параметров этого объявления.
Завершите каждую процедуру инструкцией
End Sub
илиEnd Function
соответствующим образом.
Пример
В следующем примере показана процедура, определенная с параметром ParamArray , а затем эквивалентный набор перегруженных процедур.
Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.
Невозможно перегрузить такую процедуру, если список параметров принимает одномерный массив в качестве массива параметров. Однако можно использовать подписи других неявных перегрузок. Приведенные ниже объявления иллюстрируют это.
' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)
Код в перегруженных версиях не должен проверять, предоставлен ли вызывающий код один или несколько значений параметра ParamArray
или сколько. Visual Basic передает управление в версию, соответствующую списку аргументов вызовов.
Компиляция кода
Так как процедура с ParamArray
параметром эквивалентна набору перегруженных версий, вы не можете перегрузить такую процедуру со списком параметров, соответствующим любой из этих неявных перегрузк. Дополнительные сведения см. в разделе "Рекомендации в процедурах перегрузки".
Безопасность .NET Framework
Всякий раз, когда вы работаете с массивом, который может быть неограниченно большим, существует риск перерасхода некоторой внутренней емкости приложения. Если вы принимаете массив параметров, необходимо проверить длину массива вызывающего кода, переданного в него, и выполнить соответствующие действия, если оно слишком велико для приложения.
См. также
- процедуры
- Параметры процедуры и аргументы
- необязательные параметры
- массивы параметров
- Перегрузка процедур
- процедуры устранения неполадок
- Практическое руководство. Определение нескольких версий процедуры
- Как: Вызов перегруженной процедуры
- Как перегрузить процедуру, которая принимает необязательные параметры
- Разрешение перегрузки