Существует ли встроенный эквивалент VB.NET для оператора С# с нулевым коалесцированием?
Ответ 1
Да, есть, до тех пор, пока вы используете VB 9 или более позднюю версию (входит в состав Visual Studio 2008).
Вы можете использовать версию If оператора, чтобы принять только два аргумента:
Dim myVar? As Integer = Nothing
Console.WriteLine(If(myVar, 7))
Более подробную информацию можно найти здесь в сообщении в блоге командой VB.NET.
(Да, это оператор , хотя он похож на функцию. Он будет скомпилирован до того же ИЛ, что и "правильный" оператор с нулевым коалесцированием в С#.)
Пример
Dim b As Boolean?
Console.WriteLine("{0}.", If(b, "this is expected when b is nothing"))
'output: this is expected when b is nothing.
b = False
Console.WriteLine("{0}.", If(b, "this is unexpected when b is false"))
'output: False.
b = True
Console.WriteLine("{0}.", If(b, "this is unexpected when b is true"))
'output: True.
Ответ 2
В соответствии с этим question кажется, что ответ If()
Ответ 3
Нет. Используйте GetValueOrDefault; почему он там!