Передача нулевого значения в необязательный параметр со значением по умолчанию - PullRequest
1 голос
/ 22 сентября 2010

Я думаю, что это довольно простой вопрос, но я просто хочу уточнить. Если у меня есть переменная с нулевым значением и я передам ее как необязательный параметр, получит ли параметр нулевое значение или значение по умолчанию?

dim str As String = "foo"
dim obj As Object
//call 1
Request(str, str)
//call 2
Request(str)
//call 3
Request(str, obj)


public Function Request(byVal someVal As String, Optional ByVal someVal2 As String = "bar")
   ...

Я знаю, что вызов 1 сделает someval == someval2 == "foo" внутри функции, а вызов 2 сделает someval == "foo" и someval2 == "bar", а вызов 3 сделает someval == foo, но что someval2 равно в вызове 3? обнуляемый или бар?

Кроме того - я относительно новичок в vb.net и не думаю, что полностью понимаю отличия концепции null / nullable / nothing от C #

Ответы [ 2 ]

1 голос
/ 22 сентября 2010

"Чему равно someval2 в вызове 3? Nullable или bar?"Он будет нулевым.

Ну, на самом деле, вы не можете сделать вызов 3 ... он не скомпилируется, потому что вы не можете передать объект как строковый параметр.Однако, если у вас есть dim obj в виде string = null, то это будет null.

0 голосов
/ 20 июня 2018

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

Если значение Nothing передано дополнительному параметру, значение параметра будет Nothingзначение по умолчанию будет проигнорировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...