我得到了这个编译器错误:
不能隐式转换类型“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成为falseif was.xEnableis null,或者
xEnable = was.xEnable ?? true;
如果你想xEnable成为true如果was.xEnable是null。
对于 C# 8.0 及更高版本,您可以??按照您的要求使用运算符,然后执行
xEnable = was.xEnable ?? false;
如果你想false成为默认值 when was.xEnableis 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_ba = (b == null)?false:b.Value;希望这可以帮助。