Практическое руководство. Перегрузка процедуры, принимающей неопределенное число параметров (Visual Basic)
Если процедура имеет параметр 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
Всякий раз, когда вы работаете с массивом, который может быть неограниченно большим, существует риск перерасхода некоторой внутренней емкости приложения. Если вы принимаете массив параметров, необходимо проверить длину массива вызывающего кода, переданного в него, и выполнить соответствующие действия, если оно слишком велико для приложения.
См. также
- Процедуры
- Параметры и аргументы процедуры
- Необязательные параметры
- Массивы параметров
- Перегрузка процедур
- Рекомендации по устранению неполадок
- Практическое руководство. Определение различных версий процедуры
- Практическое руководство. Вызов перегруженной процедуры
- Практическое руководство. Перегрузка процедуры, которая принимает один необязательный параметр
- Overload Resolution