You ultimately have to decide what the null bool will represent. If null
should be false
, you can do this:
bool newBool = x.HasValue ? x.Value : false;
Or:
bool newBool = x.HasValue && x.Value;
Or:
bool newBool = x ?? false;
You can use the null-coalescing operator: x ?? something
, where something
is a boolean value that you want to use if x
is null
.
Example:
bool? myBool = null;
bool newBool = myBool ?? false;
newBool
will be false.
You can use Nullable{T}
GetValueOrDefault()
method. This will return false if null.
bool? nullableBool = null;
bool actualBool = nullableBool.GetValueOrDefault();
If you're going to use the bool?
in an if
statement, I find the easiest thing to do is to compare against either true
or false
.
bool? b = ...;
if (b == true) { Debug.WriteLine("true"; }
if (b == false) { Debug.WriteLine("false"; }
if (b != true) { Debug.WriteLine("false or null"; }
if (b != false) { Debug.WriteLine("true or null"; }
Of course, you can also compare against null as well.
bool? b = ...;
if (b == null) { Debug.WriteLine("null"; }
if (b != null) { Debug.WriteLine("true or false"; }
if (b.HasValue) { Debug.WriteLine("true or false"; }
//HasValue and != null will ALWAYS return the same value, so use whatever you like.
If you're going to convert it to a bool to pass on to other parts of the application, then the Null Coalesce operator is what you want.
bool? b = ...;
bool b2 = b ?? true; // null becomes true
b2 = b ?? false; // null becomes false
If you've already checked for null, and you just want the value, then access the Value property.
bool? b = ...;
if(b == null)
throw new ArgumentNullException();
else
SomeFunc(b.Value);
The easiest way is to use the null coalescing operator: ??
bool? x = ...;
if (x ?? true) {
}
The ??
with nullable values works by examining the provided nullable expression. If the nullable expression has a value the it's value will be used else it will use the expression on the right of ??
bool? a = null;
bool b = Convert.toBoolean(a);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With