【发布时间】:2015-04-28 17:30:43
【问题描述】:
在 C# 中使用可为空的布尔值我发现自己经常编写这种模式
if(model.some_value == null || model.some_value == false)
{
// do things if some_value is not true
}
有没有更简洁的方式来表达这句话?我不能使用不可为空的布尔值,因为我不能改变模型,而且我不能这样做
if(model.some_value != true)
{
// do things if some_value is not true
}
因为如果model.some_value 为空,这将抛出空引用异常
我有一个想法:
我可以为 String.IsNullOrEmpty - bool.IsNullOrFalse 之类的布尔值编写扩展方法。这已经足够整洁了,但我想知道是否已经有一些更明显的方法可以做到这一点?
【问题讨论】:
-
第二个代码块工作完美。为什么你确实得到空引用错误。 dotnetfiddle.net/yf1bro
-
你尝试#2了吗?它应该工作正常..
-
@JenishRabadiya from msdn - "如果 HasValue 属性为 true,则可以使用 Value 属性访问当前 Nullable
对象的值。否则,尝试访问其值会抛出一个 InvalidOperationException 异常。" msdn.microsoft.com/en-us/library/sksw8094%28v=vs.110%29.aspx -
@Gusdor 你看过我提供的小提琴吗?它有效,为什么我们要获得它的价值?第二个代码块不访问它。
-
@JenishRabadiya 是对的,它确实在那里工作。道歉