0

次のコンパイラ エラーが発生しました。

タイプ「bool?」を暗黙的に変換できませんか? 「ブール」に。明示的な変換が存在します (キャストがありませんか?)。

次のコードの場合:

 xEnable = was.xEnable;

xEnableDB の null 許容列です。

4

6 に答える 6

13

この意味は

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;
于 2012-11-27T13:59:08.107 に答える
4

??タイトルのように実際に使用するには、

xEnable = was.xEnable ?? false;

もしあなたがなりたいならxEnable、、またはfalsewas.xEnablenull

xEnable = was.xEnable ?? true;

あなたがなりたいxEnableならtrueです。was.xEnablenull

于 2012-11-27T14:01:34.523 に答える
2

C#8.0以降では、??要求どおりに演算子を使用できます。

xEnable = was.xEnable ?? false;

falseデフォルト値になりたい場合。was.xEnablenull

于 2012-11-27T14:01:54.913 に答える
1

was.xEnablenullでないことがわかっている場合は、次を使用できます。

xEnable = was.xEnable.Value

のときにデフォルト値を使用する場合was.xEnablenull、次のように実行できます。

bool defaultValue = false;
xEnable = was.xEnable ?? defaultValue;
于 2012-11-27T13:59:35.520 に答える
0

実際にデータベースにnull値を渡そうとしていますか?もしそうなら:

xEnable = was.xEnable.HasValue ? was.xEnable.Value : DBNull.Value;
于 2012-11-27T14:02:57.257 に答える
0
bool a = false; 
bool? b = null; 
a = (bool)b;

これにより、がの場合に例外が発生しbますnull

したがって、考えられる解決策は次のとおりです。

  • bあなたはそれが決してないこと を知っているnullので、このパターンを使用してください(悪い)
  • ;aによってnull許容に するbool? a = false
  • を確認しnullてくださいba = (b == null)?false:b.Value;

お役に立てれば。

于 2012-11-27T14:03:17.360 に答える