2017-02-01 5 views
-4

У меня есть функция with1 Параметр и 10 необязательных параметров. Необязательные параметры - все ничего. Теперь я хочу проверить, изменил ли его необязательный параметр его значение или функция была запущена с необязательным параметром. Подумайте, что параметры могут иметь значение Nothing Nothing, и функция возвращает тоже. ty для вашей помощи. : DПроверьте, не изменился ли дополнительный параметр

+2

Я не следую вашему вопросу. Почему бы вам не взглянуть на образец кода. Также рассмотрите возможность использования [Перегрузки] (https://msdn.microsoft.com/en-us/library/ms973896.aspx) вместо необязательных параметров. – Bugs

ответ

2

10 параметров .. это немного чрезмерно ... и трудно управлять. Вам лучше пройти класс или структуру.

Проверка необязательного параметра по умолчанию является обычным методом для определения того, задана ли она заранее или нет, как в предыдущем ответе.

Вам нужно будет передать объект по ссылке, если вам нужно проверить, было ли оно изменено во время работы подпрограммы, но если оно было первоначально передано как «Nothing», которое не будет работать.

Без дополнительной информации о том, каково ваше намерение использования, немного сложно ответить на этот вопрос окончательно.

0

Если ваши другие необязательные параметры ничего не верят, то их ссылочным типом является строка.

Следующая из MSDN, чтобы проверить, если дополнительный аргумент присутствует -

это процедура не может определить во время выполнения, имеет ли данный аргумент опущен или вызывающий код явным образом подается значение по умолчанию. Если вам нужно сделать это различие, вы можете установить маловероятное значение по умолчанию. Следующая процедура определяет дополнительный офис параметров, а также тесты на его значение по умолчанию, QJZ, чтобы увидеть, если он был опущен в вызове:

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ") 
    If office = "QJZ" Then 
     Debug.WriteLine("office not supplied -- using Headquarters") 
     office = "Headquarters" 
    End If 
    ' Insert code to notify headquarters or specified office. 

End Sub

Link можно найти HERE