Kann Typ Bool nicht implizit konvertiert werden?
Ich versuche meine konvertieren nullable bool-Wert, und ich bin immer diese Fehlermeldung.
Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?)
Zum Beispiel:
public virtual bool? MyBool
{
get;
set;
}
if (!MyBool){}
InformationsquelleAutor der Frage user603007 | 2012-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie die Fehlermeldung heißt, Sie nicht verwenden können, eine
bool?
in einem bedingten. (Was würde passieren, wenn esnull
?)Stattdessen können Sie schreiben
if (MyBool != true)
oderif (MyBool == false)
je nachdem, ob Sie möchten enthaltennull
. (und sollten Sie einen Kommentar hinzufügen, dass zu erklären)InformationsquelleAutor der Antwort SLaks
Verwenden Sie MyBool.Wert
Beispiel:
Jedoch, sollten Sie testen, dass es tatsächlich einen Wert haben, um mit zu beginnen. Diese tests, die MyBool hat einen Wert und es ist falsch.
Oder Sie vielleicht wirklich wollen, das folgende, das den code ausführt block, wenn er entweder nicht belegt oder hat, ist falsch.
Die Frage darauf hinausläuft, ob Sie wirklich beabsichtigt zu haben, eine null-boolean-variable, und wenn ja, wie Sie damit umgehen wollen die 3 möglichen Bedingungen der
null, true or false
.InformationsquelleAutor der Antwort NotMe
Müssen Sie prüfen, ob es einen Wert hat. Was wollen Sie tun, wenn
MyBool == null
?InformationsquelleAutor der Antwort The Real Baumann