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

См. также