Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если процедура имеет один или несколько необязательных параметров, нельзя определить перегруженную версию, соответствующую какой-либо из неявных перегрузок. Дополнительные сведения см. в разделе "Неявные перегрузки для необязательных параметров" в разделе "Рекомендации в процедурах перегрузки".
Один необязательный параметр
Перегрузка процедуры, которая принимает один необязательный параметр
Sub
Напишите инструкцию илиFunction
объявление, которая включает необязательный параметр в списке параметров. Не используйте ключевоеOptional
слово в этой перегруженной версии.Предшествуйте ключевому слову
Sub
или ключевому словуFunction
ключевым словом Перегрузки.Напишите код процедуры, который должен выполняться, когда вызывающий код предоставляет необязательный аргумент.
Завершите процедуру с помощью инструкции
End Sub
илиEnd Function
, в зависимости от ситуации.Напишите второе объявление, идентичное первому, за исключением того, что оно не включает необязательный параметр в список параметров.
Напишите код процедуры, который должен выполняться, если вызывающий код не предоставляет необязательный аргумент. Завершите процедуру с помощью инструкции
End Sub
илиEnd Function
, в зависимости от ситуации.В следующем примере показана процедура, определенная с необязательным параметром, эквивалентным набором двух перегруженных процедур, а также примерами как недопустимых, так и допустимых перегруженных версий.
Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
' The preceding definition is equivalent to the following two overloads. ' Overloads Sub q(ByVal b As Byte) ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
' Therefore, the following overload is not valid because the signature is already in use. ' Overloads Sub q(ByVal c As Byte, ByVal k As Long) ' The following overload uses a different signature and is valid. Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
Несколько необязательных параметров
Для процедуры с несколькими необязательными параметрами обычно требуется более двух перегруженных версий. Например, если есть два необязательных параметра, и вызывающий код может предоставить или опустить каждый из них независимо друг от друга, вам потребуется четыре перегруженные версии, по одному для каждого из возможных сочетаний предоставленных аргументов.
По мере увеличения числа необязательных параметров сложность перегрузки увеличивается. Если некоторые сочетания предоставленных аргументов не допустимы, для необязательных параметров N требуется 2 ^ N перегруженных версий. В зависимости от характера процедуры, вы можете обнаружить, что ясность логики оправдывает дополнительные усилия по определению всех перегруженных версий.
Перегрузка процедуры, которая принимает несколько необязательных параметров
Определите, какие сочетания предоставленных необязательных аргументов допустимы для логики процедуры. Неприемлемое сочетание может возникнуть, если один необязательный параметр зависит от другого. Например, если один параметр принимает имя пользователя, а другой принимает возраст человека, сочетание аргументов, предоставляющих возраст, но пропуская имя неприемлемо.
Для каждого допустимого сочетания предоставленных необязательных аргументов напишите оператор
Sub
илиFunction
для определения соответствующего списка параметров. Не используйте ключевоеOptional
слово.В каждом объявлении перед каждым ключевым словом
Sub
илиFunction
необходимо использовать ключевое слово Перегрузки.После каждого объявления напишите код процедуры, который должен выполняться, когда вызывающий код предоставляет список аргументов, соответствующий списку параметров этого объявления.
Завершите каждую процедуру инструкцией
End Sub
илиEnd Function
соответствующим образом.
См. также
- процедуры
- Параметры процедуры и аргументы
- необязательные параметры
- массивы параметров
- Перегрузка процедур
- процедуры устранения неполадок
- Практическое руководство. Определение нескольких версий процедуры
- Как: Вызов перегруженной процедуры
- Перегрузка процедуры, которая принимает неограниченное количество параметров
- Разрешение перегрузки