Jak przekonwertować wartość null bool?
do bool
w C #?
Próbowałem x.Value
lub x.HasValue
...
Ostatecznie musisz zdecydować, co będzie reprezentować null bool. Jeśli null
tak false
, możesz to zrobić:
bool newBool = x.HasValue ? x.Value : false;
Lub:
bool newBool = x.HasValue && x.Value;
Lub:
bool newBool = x ?? false;
VB.NET
razie zrobić:dim newBool as Boolean = CBool(x)
? Zostanienull
przekonwertowany nafalse
lub zostanie zgłoszony wyjątek?Linq
klauzulilifted operators
`` Gdzie '', nie mogłem zrozumieć, dlaczego nie wydaje się działać w Linq (może to tylko VB.NET?) - Właśnie przetestowałem i rzuca nieprawidłowy wyjątek rzucanyMożna użyć null zlewających operatora :
x ?? something
, gdziesomething
jest wartością logiczną, który chcesz użyć, jeżelix
jestnull
.Przykład:
newBool
będzie fałszywa.źródło
bool? myBool = null; bool newBool = myBool ?? false;
Możesz użyć
Nullable{T}
GetValueOrDefault()
metody. To zwróci false, jeśli null.źródło
if (nullableBool.GetValueOrDefault())
Jeśli masz zamiar użyć
bool?
wif
oświadczeniu, wydaje mi się, że najłatwiej jest porównać je z albotrue
albofalse
.Oczywiście możesz również porównać z null.
Jeśli zamierzasz przekonwertować go na bool, aby przekazać go do innych części aplikacji, to operator Null Coalesce jest tym, czego potrzebujesz.
Jeśli już sprawdziłeś, czy nie ma wartości null, i chcesz tylko uzyskać wartość, uzyskaj dostęp do właściwości Value.
źródło
Najłatwiejszym sposobem jest użycie operatora koalescencji zerowej:
??
Z
??
wartościami dopuszczającymi wartość null działa, sprawdzając podane wyrażenie dopuszczające wartość null. Jeśli wyrażenie dopuszczające wartość null ma wartość, zostanie użyta jego wartość, w przeciwnym razie użyje wyrażenia po prawej stronie??
źródło
źródło
Kompletny sposób byłby:
Lub możesz przetestować określone wartości za pomocą
źródło
Coś jak:
źródło
Ta odpowiedź dotyczy przypadku użycia, gdy chcesz po prostu przetestować
bool?
stan w. Można go również użyć, aby uzyskać normalnybool
. Jest to alternatywa, którą osobiście uważam za łatwiejszą do odczytania niżcoalescing operator ??
.Jeśli chcesz przetestować stan, możesz użyć tego
Powyższe if będzie prawdziwe tylko wtedy, gdy
bool?
jest prawdziwe.Możesz również użyć tego do przypisania regularnego
bool
zbool?
wiedźma jest taka sama jak
źródło
To ciekawa wariacja na ten temat. Na pierwszy i drugi rzut oka można założyć, że prawdziwa gałąź jest zajęta. Skąd!
Aby uzyskać to, czego chcesz, wykonaj następujące czynności:
źródło
System.Convert działa dobrze według mnie.
using System; ... Bool fixed = Convert.ToBoolean(NullableBool);
źródło