private bool? _success;
public bool Success
{
get
{
return _success ?? (_success = false);
}
}
为什么编译器找不到正确的操作数总是假的,并且要求我把它转换为bool
?
答案 0 :(得分:9)
由于您要分配给Nullable<bool>
,因此右操作数为bool? _success
。这不能隐含地转换为bool,这就是为什么需要强制转换的原因。
如果删除作业,那么它将正常工作:
return _success ?? false;
这有效,因为“假”已经是bool
。
但是,当前代码在为其赋值_success
后会返回false
。 As _success
是bool?
,右手操作数返回bool?
,而不是bool
。
答案 1 :(得分:0)
您通常会使用GetValueOrDefault()
:
private bool? _success;
public bool Success
{
get
{
return _success.GetValueOrDefault(false);
}
}