Как преобразовать обнуляемый bool?
к bool
в C #?
Я пробовал x.Value
или x.HasValue
...
В конечном итоге вы должны решить, что будет представлять null bool. Если null
должно быть false
, вы можете сделать это:
bool newBool = x.HasValue ? x.Value : false;
Или:
bool newBool = x.HasValue && x.Value;
Или:
bool newBool = x ?? false;
VB.NET
если вы сделаетеdim newBool as Boolean = CBool(x)
:? Будетnull
преобразовано вfalse
или возникнет исключение?Linq
«Где», я не мог понять, почемуlifted operators
, похоже, не работает внутри Linq (возможно, это просто VB.NET?) - Я только что протестировал и это вызывает недопустимое исключение приведенияВы можете использовать оператор объединения с нулевым значением :,
x ?? something
гдеsomething
- логическое значение, которое вы хотите использовать, еслиx
естьnull
.Пример:
newBool
будет ложным.источник
bool? myBool = null; bool newBool = myBool ?? false;
Вы можете использовать
Nullable{T}
GetValueOrDefault()
метод. Это вернет false, если null.источник
if (nullableBool.GetValueOrDefault())
Если вы собираетесь использовать оператор
bool?
in вif
операторе, я считаю, что проще всего сравнить с однимtrue
илиfalse
.Конечно, вы также можете сравнить с null.
Если вы собираетесь преобразовать его в логическое значение для передачи другим частям приложения, тогда вам нужен оператор Null Coalesce.
Если вы уже проверили значение null и вам просто нужно значение, перейдите к свойству Value.
источник
Самый простой способ - использовать оператор объединения NULL:
??
Объект
??
со значениями, допускающими значение NULL, работает путем проверки предоставленного выражения, допускающего значение NULL. Если выражение, допускающее значение NULL, имеет значение, оно будет использоваться, иначе оно будет использовать выражение справа от??
источник
источник
Полный способ:
Или вы можете проверить конкретные значения, используя
источник
Что-то вроде:
источник
Этот ответ предназначен для случая использования, когда вы просто хотите протестировать
bool?
в состоянии. Его также можно использовать для получения нормальногоbool
. Это альтернатива, которую я лично считаю более легкой для чтения, чемcoalescing operator ??
.Если вы хотите проверить условие, вы можете использовать это
Вышеупомянутое if будет истинным, только если
bool?
истинно.Вы также можете использовать это, чтобы назначить постоянного клиента
bool
изbool?
ведьма такая же, как
источник
Это интересная вариация на тему. На первый и второй взгляд можно предположить, что выбрана настоящая ветвь. Не так!
Чтобы получить то, что вы хотите, нужно сделать следующее:
источник
System.Convert у меня отлично работает.
using System; ... Bool fixed = Convert.ToBoolean(NullableBool);
источник