[英]Converting Nullable<bool> to bool
我收到此编译器错误:
不能隐式转换类型“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
如果was.xEnable
为null
,或
xEnable = was.xEnable ?? true;
如果您希望xEnable
为true
如果was.xEnable
为null
。
对于 C# 8.0 及更高版本,您可以使用??
操作员,正如你所问的,做
xEnable = was.xEnable ?? false;
如果您希望false
成为was.xEnable
为null
时的默认值。
如果您知道was.xEnable
不为 null,则可以使用
xEnable = was.xEnable.Value
如果要在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
为null
情况下引发异常。
所以可能的解决方案是:
b
永远不会为null
,所以使用这个模式(坏)bool? a = false
也可以a
空bool? a = false
bool? a = false
;b
null
, a = (b == null)?false:b.Value;
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.