Есть ли VB.NET-эквивалент для ??
оператора C # ?
vb.net
operators
null-coalescing-operator
Натан Куп
источник
источник
Ответы:
Используйте
If()
оператор с двумя аргументами ( документация Microsoft ):источник
If()
утверждение в VB такое же, какif...?...:
в C #, а не??
оператор??
(см. Другой ответ на этот вопрос: stackoverflow.com/a/20686360/1474939 )If
с тремя параметрами . Это не похоже на??
оператор C # . Лучшим ответом будет код Maverick's If с двумя аргументами . (Ник имел аналогичный ответ, несколько лет назад, но не включает объяснения из MSDN.)IF()
Оператор должен сделать трюк для вас:http://visualstudiomagazine.com/listings/list.aspx?id=252
источник
Принятый ответ не имеет никакого объяснения и является просто ссылкой.
Поэтому я решил оставить ответ, объясняющий, как
If
работает оператор, взятый из MSDN:Если оператор (Visual Basic)
Если оператор вызван с двумя аргументами
части
VB
Пример того, как обрабатывать более двух значений (вложенных
if
):источник
Вы можете использовать метод расширения. Этот работает как SQL
COALESCE
и, вероятно, излишним для того, что вы пытаетесь проверить, но это работает.Встроенный
If(nullable, secondChoice)
может обрабатывать только два обнуляемых выбора. Здесь можноCoalesce
указать столько параметров, сколько нужно. Будет возвращен первый ненулевой, а остальные параметры не будут оцениваться после этого (короткое замыкание, напримерAndAlso
/&&
иOrElse
/||
)источник
Return args.FirstOrDefault(Function(arg) arg IsNot Nothing)
:-)Одним из существенных ограничений большинства этих решений является то, что они не будут закорачиваться. Поэтому они на самом деле не эквивалентны
??
.Встроенный
If
оператор не будет оценивать последующие параметры, если более ранний параметр ничего не оценивает.Следующие утверждения эквивалентны:
C #
VB
Это будет работать во всех случаях, когда
??
работает. Любое другое решение должно использоваться с особой осторожностью, поскольку оно может легко привести к ошибкам во время выполнения.источник
Ознакомьтесь с документацией Microsoft об операторе If (Visual Basic) здесь: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/if-operator
Вот несколько примеров (VB.Net)
источник