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


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

Если процедура имеет один или несколько параметров Optional (Visual Basic), нельзя определить перегруженную версию, соответствующую любой из ее неявных перегрузок.Дополнительные сведения содержатся в разделе "Неявные перегрузки для опциональных параметров" в Вопросы, связанные с перегрузкой процедур (Visual Basic).

Один необязательный параметр

Чтобы перегрузить процедуру, которая принимает один опциональный параметр

  1. Напишите объявление инструкции Sub или Function, которая содержит опциональный параметр в списке параметров.Не используйте ключевое слово Optional в данной перегруженной версии.

  2. Переместите ключевое слово Sub или Function так, чтобы оно предшествовало ключевому слову Overloads (Visual Basic).

  3. Напишите код процедуры, который должен выполняться, когда код вызова предоставляет опциональный аргумент.

  4. Завершите процедуру подходящим оператором End Sub либо End Function.

  5. Запишите вторую инструкцию объявления, идентичную первому объявлению, за исключением того, что она не включает опциональный параметр в списке параметров.

  6. Напишите код процедуры, который должен выполняться, когда код вызова не предоставляет необязательный аргумент.Завершите процедуру подходящим оператором 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 перегруженных версий.Из характера процедуры ясно, что требуются лишние усилия для определения всех перегруженных версий.

Чтобы перегрузить процедуру, которая принимает больше одного необязательного параметра

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

  2. Для каждой допустимой комбинации предоставленных опциональных аргументов напишите инструкции объявления Sub или Function, определяющие соответствующий список параметров.Не используйте ключевое слово Optional.

  3. В каждом объявлении ключевому слову Sub или Function должно предшествовать ключевое слово Overloads (Visual Basic).

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

  5. Завершите выполнение каждой процедуры оператором End Sub или End Function .

См. также

Задачи

Устранение неполадок в процедурах (Visual Basic)

Практическое руководство. Определение различных версий процедуры (Visual Basic)

Практическое руководство. Вызов перегруженной процедуры (Visual Basic)

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

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

Процедуры в Visual Basic

Параметры и аргументы процедуры (Visual Basic)

Необязательные параметры (Visual Basic)

Массивы параметров (Visual Basic)

Перегрузка процедур (Visual Basic)

Разрешение перегрузки (Visual Basic)