Null値を許可するbool値を変換しようとしていますが、このエラーが発生しています。
Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?)
例:
public virtual bool? MyBool
{
get;
set;
}
if (!MyBool){}
エラーが示すように、条件文で_bool?
_を使用することはできません。 (null
の場合はどうなりますか?)
代わりに、null
を含めるかどうかに応じて、if (MyBool != true)
またはif (MyBool == false)
を記述できます。 (そして、それを説明するコメントを追加する必要があります)
MyBool.Valueを使用する必要があります
例えば:
if (!MyBool.Value) { }
ただし、実際に最初から値があることをテストする必要があります。これは、MyBoolに値があり、falseであることをテストします。
if (MyBool.HasValue && !MyBool.Value) { }
または、コードブロックが割り当てられていないか、またはfalseである場合にコードブロックを実行する次のものが本当に必要な場合があります。
if (!MyBool.HasValue || !MyBool.Value) { }
質問は本当に、null可能なブール変数を持つことを本当に意図していたかどうか、もしそうなら、null, true or false
の3つの可能な条件をどのように処理したいかに要約されます。
値があるかどうかを確認する必要があります。 MyBool == null
?
if( MyBool.HasValue && !MyBool.Value ) // MyBool is false
if( MyBool.HasValue && MyBool.Value ) // MyBool is true
if( !MyBool.HasValue ) // MyBool is null