[英]c# assign value for nullable boolean
我正在尝试将?:运算符分配给可为空的布尔变量。
这是原始代码,可以正常工作
bool? result;
var condition = 3;
if (condition == 1)
result = true;
else if (condition == 2)
result = false;
else result = null;
更改代码后,它遇到错误,我在搜索互联网后将其修复
// before (error occur)
result = condition == 1 ? true : (condition == 2 ? false : null);
// after (fixed error)
result = condition == 1 ? true : (condition == 2 ? false : (bool?)null);
// *or
result = condition == 1 ? true : (condition == 2 ? (bool?)false : null);
我知道两个表达式必须具有相同的类型,但是为什么只需要转换一个表达式却不转换所有表达式呢? 这让我感到困惑。
从我的理解bool and bool?
还是bool? and null
bool? and null
应该仍然被认为是不相同的类型,但是在这种情况下可以使用。
任何建议,将不胜感激。 谢谢。
在三元条件运算符中,编译器要求每个可能的赋值都是同一类型。
在段中(condition == 2 ? false : null)
,两个可能的值为false
和null
。 编译器将false
视为bool
,因此会出错,因为null
不是bool
值的有效替代值。
通过使用(bool?)
作为前缀,您可以清楚地知道实际上是在分配一个可为空的布尔值,这使编译器感到满意,因为它知道两个值确实是同一类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.