bool? x = true;
if (x == true)
看起来很尴尬。
但有时这正是所需要的。
有更好的方法吗?
修改
感谢大家的尝试,但到目前为止,我还没有找到一种能够击败原版的方法。我想我只需要处理尴尬,或者评论它。
答案 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 */ }