次のコンパイラ エラーが発生しました。
タイプ「bool?」を暗黙的に変換できませんか? 「ブール」に。明示的な変換が存在します (キャストがありませんか?)。
次のコードの場合:
xEnable = was.xEnable;
xEnable
DB の null 許容列です。
この意味は
xEnable is of type bool
と
was.xEnable is of type bool? (ie: nullable bool)
次のようなことをします
xEnable = was.xEnable.HasValue ? was.xEnable.Value : false;
ここで、falseはwas.xEnable==nullの場合のデフォルト値です。
編集 またはあなたが本当に欲しいならあなたは??を使用することができます のような演算子
xEnable = was.xEnable ?? true;
また
xEnable = was.xEnable ?? false;
??
タイトルのように実際に使用するには、
xEnable = was.xEnable ?? false;
もしあなたがなりたいならxEnable
、、またはfalse
was.xEnable
null
xEnable = was.xEnable ?? true;
あなたがなりたいxEnable
ならtrue
です。was.xEnable
null
C#8.0以降では、??
要求どおりに演算子を使用できます。
xEnable = was.xEnable ?? false;
がfalse
デフォルト値になりたい場合。was.xEnable
null
was.xEnable
nullでないことがわかっている場合は、次を使用できます。
xEnable = was.xEnable.Value
のときにデフォルト値を使用する場合was.xEnable
はnull
、次のように実行できます。
bool defaultValue = false;
xEnable = was.xEnable ?? defaultValue;
実際にデータベースにnull値を渡そうとしていますか?もしそうなら:
xEnable = was.xEnable.HasValue ? was.xEnable.Value : DBNull.Value;
bool a = false;
bool? b = null;
a = (bool)b;
これにより、がの場合に例外が発生しb
ますnull
。
したがって、考えられる解決策は次のとおりです。
b
あなたはそれが決してないこと を知っているnull
ので、このパターンを使用してください(悪い)a
によってnull許容に するbool? a = false
null
てくださいb
、a = (b == null)?false:b.Value;
お役に立てれば。