在C#bool? x =真; if(x == true)看起来很尴尬

时间:2010-11-16 03:14:35

标签: c#-4.0

bool? x = true;
if (x == true)

看起来很尴尬。

但有时这正是所需要的。

有更好的方法吗?

修改

感谢大家的尝试,但到目前为止,我还没有找到一种能够击败原版的方法。我想我只需要处理尴尬,或者评论它。

3 个答案:

答案 0 :(得分:8)

根据您的具体情况,您可能希望使用空合并运算符,该运算符允许您指定在未设置bool?时使用的默认值。它并不比你的条件短,但我认为它很有用:

if(x ?? true) //defaults to true if x is not set

或者,直接复制您的案例(并且由于受欢迎的需求):

if(x ?? false) //defaults to false if x is not set

答案 1 :(得分:1)

if (x)相当于if (x == true)。没有必要进行额外的比较,因为x是一个布尔值。

编辑:错过了可以为空的。在这种情况下,除非你想做一个简单的辅助函数,否则它确实是你能得到的最好的。

bool isTrue(bool? value) {
  return value == true;
}

但是if (isTrue(x))并不是更清洁。

答案 2 :(得分:1)

bool? x = true; 
if (x.HasValue && x.Value)
{ /* Other code here */ }

或使用GetValueOrDefault(),但这不是一个苛刻的......

bool? x = true; 
if (x.GetValueOrDefault(false))
{ /* Other code here */ }