我有一个例外:
无法隐式转换类型'bool?' 'bool'。一个明确的 转换存在(您是否错过了演员?)。
代码:
xEnable = was.xEnable;
xEnable
是DB中可以为空的列。
答案 0 :(得分: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;
答案 1 :(得分:3)
要在标题中实际使用??
,请转到
xEnable = was.xEnable ?? false;
如果xEnable
false
为was.xEnable
,或者
null
为xEnable = was.xEnable ?? true;
xEnable
如果true
was.xEnable
为null
,则{{1}}为{{1}}。
答案 2 :(得分:1)
如果您知道was.xEnable
不为空,则可以使用
xEnable = was.xEnable.Value
如果您想在was.xEnable
为null
时使用默认值,则可以执行以下操作
bool defaultValue = false;
xEnable = was.xEnable ?? defaultValue;
答案 3 :(得分:1)
你可以用??运营商,正如您所问,并且
xEnable = was.xEnable ?? false;
如果您想在was.xEnable
为空时将false设为默认值。
答案 4 :(得分:0)
您是否尝试将空值传递给数据库?如果是这样的话:
xEnable = was.xEnable.HasValue ? was.xEnable.Value : DBNull.Value;
答案 5 :(得分:0)
bool a = false;
bool? b = null;
a = (bool)b;
如果b
为null
,则会引发异常。
所以可能的解决方案可能是:
b
从不 null
,所以请使用此模式(错误)a
; bool? a = false
也可以为空
null
,b
a = (b == null)?false:b.Value;
希望这有帮助。