Мы все знаем, что VB Nothing
аналогичен, но не эквивалентен С# null
. (Если вы этого не знаете, сначала посмотрите этот ответ.)
Просто из любопытства я хотел бы знать следующее:
Есть ли выражение VB.NET, которое всегда дает null
?
Чтобы привести конкретный пример, сделайте следующее утверждение:
Dim o As Object = If(myBool, 5, ...)
Можно ли заменить ...
на что-то такое, что o
есть 5
, когда myBool
является true и Nothing/null
, когда myBool
является ложным?
Очевидные решения, которые не будут работать:
-
Nothing
(см. вопрос к связанному ответу выше), -
DirectCast(Nothing, Object)
(выдает ошибку времени компиляции с опцией Strict On), -
DirectCast(Nothing, Integer?)
работает для этого примера, но не работает вообще (если вы замените5
на5.0
в этом примере, вам нужно будет изменить исполнение).
Очевидные обходные пути (не будут учитываться как ответы):
- Объявите переменную или поле
Object
, установите его наNothing
и используйте для...
, - определить метод или свойство, которое всегда возвращает
Nothing
, -
DirectCast
второй параметр (5
) -Object
.
Примечание. Приведенный выше пример является лишь примером. Сам вопрос выделен жирным шрифтом.