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


Как перегрузить процедуру, которая принимает необязательные параметры (Visual Basic)

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

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

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

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

  2. Предшествуйте ключевому слову Sub или ключевому слову Function ключевым словом Перегрузки.

  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 необходимо использовать ключевое слово Перегрузки.

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

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

См. также