我得到了这个编译器错误:
不能隐式转换类型“bool?” '布尔'。存在显式转换(您是否缺少演员表?)。
对于以下代码:
xEnable = was.xEnable;
xEnable
是 DB 中的一个可为空的列。
这意味着
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
if was.xEnable
is null
,或者
xEnable = was.xEnable ?? true;
如果你想xEnable
成为true
如果was.xEnable
是null
。
对于 C# 8.0 及更高版本,您可以??
按照您的要求使用运算符,然后执行
xEnable = was.xEnable ?? false;
如果你想false
成为默认值 when was.xEnable
is null
。
如果你知道它was.xEnable
不为空,你可以使用
xEnable = was.xEnable.Value
如果要在 is 时使用默认值was.xEnable
,null
可以执行以下操作
bool defaultValue = false;
xEnable = was.xEnable ?? defaultValue;
您是否尝试将空值实际传递给数据库?如果是这样的话:
xEnable = was.xEnable.HasValue ? was.xEnable.Value : DBNull.Value;
bool a = false;
bool? b = null;
a = (bool)b;
b
如果is ,这将引发异常null
。
所以可能的解决方案可能是:
b
是never null
,所以使用这种模式(不好)a
空, by bool? a = false
;null
_b
a = (b == null)?false:b.Value;
希望这可以帮助。