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