繁体   English   中英

C#为可空布尔值赋值

[英]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) ,两个可能的值为falsenull 编译器将false视为bool ,因此会出错,因为null不是bool值的有效替代值。

通过使用(bool?)作为前缀,您可以清楚地知道实际上是在分配一个可为空的布尔值,这使编译器感到满意,因为它知道两个值确实是同一类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM