在 C# 中处理 bool 的一种更简洁的方法
A neater way of handling bools in C#
在 C# 中使用可为 null 的 bool,我发现自己经常写这种模式
if(model.some_value == null || model.some_value == false)
{
// do things if some_value is not true
}
有没有更简洁的表达方式?我不能使用不可为 null 的布尔值,因为我不能更改模型,而且我不能这样做
if(model.some_value != true)
{
// do things if some_value is not true
}
因为如果 model.some_value
为 null
这将抛出空引用异常
我有一个想法:
我可以为像 String.IsNullOrEmpty
- bool.IsNullOrFalse
这样的 bool 写一个扩展方法。这已经足够简洁了,但我想知道是否已经有一些更明显的方法可以做到这一点?
使用空合并运算符处理值为空的情况。
if(model.some_value ?? false != true)
{
// do things if some_value is not true
}
来自 msdn:
?? Operator (C# Reference)
The ?? operator is called the null-coalescing operator. It returns the
left-hand operand if the operand is not null; otherwise it returns the
right hand operand.
或者,switch
也可以。
switch(model.some_value)
{
case false:
case null:
// do things if some_value is not true
break;
}
在 C# 中使用可为 null 的 bool,我发现自己经常写这种模式
if(model.some_value == null || model.some_value == false)
{
// do things if some_value is not true
}
有没有更简洁的表达方式?我不能使用不可为 null 的布尔值,因为我不能更改模型,而且我不能这样做
if(model.some_value != true)
{
// do things if some_value is not true
}
因为如果 model.some_value
为 null
我有一个想法:
我可以为像 String.IsNullOrEmpty
- bool.IsNullOrFalse
这样的 bool 写一个扩展方法。这已经足够简洁了,但我想知道是否已经有一些更明显的方法可以做到这一点?
使用空合并运算符处理值为空的情况。
if(model.some_value ?? false != true)
{
// do things if some_value is not true
}
来自 msdn:
?? Operator (C# Reference)
The ?? operator is called the null-coalescing operator. It returns the left-hand operand if the operand is not null; otherwise it returns the right hand operand.
或者,switch
也可以。
switch(model.some_value)
{
case false:
case null:
// do things if some_value is not true
break;
}