使用三元运算符在C#中获取可空bool的值

时间:2017-10-16 19:38:20

标签: c#

是否有单行代码才能执行此操作?

string to = someNullableBool ? "value1" : "value2";

目前正在“无法隐式地将bool转换为bool”...... ??运营商是否在这里发挥作用?或者只有在分配给布尔时才会这样做?

基本上,如果someNullableBool为null或false,则应将其视为false。

2 个答案:

答案 0 :(得分:3)

我会使用以下内容确保您拥有一个值并且该值为true。它更具可读性,但不是最高性能的解决方案。

string to = (someNullableBool.HasValue && someNullableBool.Value) ? "value1" : "value2";

答案 1 :(得分:2)

取决于如果someNullableBool为空,您希望如何解释它。

如果您希望null被视为truefalse,您可以说(someNullableBool ?? valueIfNull)将其视为一个或另一个。

如果必须特别处理null,那么您需要检查someNullableBool.HasValue并处理它为空的情况。完成后,truefalse的案例可按上述方式处理。

如果值永远不应为null,理想情况下,它首先不应该是可空的。 :P但是,如果这不受您的控制,您可能希望转换为bool或使用可空的Value属性使该期望显式,并且如果它不成立则失败。