Wie konvertiert man eine Null bool?
in bool
in C #?
Ich habe es versucht x.Value
oder x.HasValue
...
Sie müssen letztendlich entscheiden, was der Null-Bool darstellen soll. Wenn null
sollte es sein false
, können Sie dies tun:
bool newBool = x.HasValue ? x.Value : false;
Oder:
bool newBool = x.HasValue && x.Value;
Oder:
bool newBool = x ?? false;
VB.NET
wenn Sie tun :dim newBool as Boolean = CBool(x)
? Wirdnull
konvertiertfalse
oder wird eine Ausnahme ausgelöst?Linq
Anweisung 'Where'-Klausel vorgeschlagen. Ich konnte nicht verstehen, warumlifted operators
es in Linq nicht zu funktionieren schien (vielleicht ist es nur VB.NET?). Ich habe es gerade getestet und es wirft eine ungültige BesetzungsausnahmeSie können den Null-Koaleszenz-Operator verwenden :
x ?? something
, wobeisomething
ein boolescher Wert ist, den Sie verwenden möchten, wennx
isnull
.Beispiel:
newBool
wird falsch sein.quelle
bool? myBool = null; bool newBool = myBool ?? false;
Sie können
Nullable{T}
GetValueOrDefault()
Methode verwenden. Dies gibt false zurück, wenn null.quelle
if (nullableBool.GetValueOrDefault())
Wenn Sie das
bool?
in einerif
Anweisung verwenden, ist es für mich am einfachsten, es mit entwedertrue
oder zu vergleichenfalse
.Natürlich können Sie auch mit Null vergleichen.
Wenn Sie es in einen Bool konvertieren, um es an andere Teile der Anwendung weiterzuleiten, ist der Null Coalesce-Operator genau das, was Sie wollen.
Wenn Sie bereits auf null geprüft haben und nur den Wert möchten, greifen Sie auf die Value-Eigenschaft zu.
quelle
Am einfachsten ist es, den Null-Koaleszenz-Operator zu verwenden:
??
Das
??
mit nullbaren Werten funktioniert, indem der bereitgestellte nullbare Ausdruck untersucht wird. Wenn der nullfähige Ausdruck einen Wert hat, wird sein Wert verwendet, andernfalls wird der Ausdruck rechts von verwendet??
quelle
quelle
Der vollständige Weg wäre:
Oder Sie können mit auf bestimmte Werte testen
quelle
Etwas wie:
quelle
Diese Antwort ist für den Anwendungsfall gedacht, wenn Sie das einfach
bool?
in einem Zustand testen möchten . Es kann auch verwendet werden, um eine normale zu bekommenbool
. Es ist eine Alternative, die ich persönlich leichter zu lesen finde als diecoalescing operator ??
.Wenn Sie eine Bedingung testen möchten, können Sie diese verwenden
Das obige Wenn wird nur wahr sein, wenn das
bool?
wahr ist.Sie können dies auch verwenden, um eine reguläre
bool
von a zuzuweisenbool?
Hexe ist das gleiche wie
quelle
Dies ist eine interessante Variation des Themas. Auf den ersten und zweiten Blick würden Sie annehmen, dass der wahre Zweig genommen wird. Nicht so!
Der Weg, um das zu bekommen, was Sie wollen, ist folgender:
quelle
System.Convert funktioniert gut von mir.
using System; ... Bool fixed = Convert.ToBoolean(NullableBool);
quelle