我正在寻找一种更简洁的方式在C#中表达以下测试,其中x是可以为空的int
英语:如果x有一个值并且y> x那么就做点什么
C#更简洁:
if(x.HasValue && y > x)
Run Code Online (Sandbox Code Playgroud)
类似地,如果我想将可以为空的布尔值(x)默认为false,我可能会写:
if(x ?? false)
{
//x is true
}
else
{
//x is either null or false
}
Run Code Online (Sandbox Code Playgroud)
代替:
if(x.HasValue() && x == true)
Run Code Online (Sandbox Code Playgroud)
非常感谢
小智 11
y > x 应该足够了.
0 >= (int?)null // false
0 <= (int?)null // false
Run Code Online (Sandbox Code Playgroud)
(OTOH,我被这种行为所困扰,我认为某些东西会"大于"null.在这些情况下,y > (x ?? 0)或者类似的东西可能会有用.)
来自Ben Voigt关于使用Nullable类型的评论:
当您使用可空类型进行比较时,如果其中一个可空类型的值为null而另一个不是,则除了!=(不等于)之外,所有比较都会计算为false.重要的是不要假设因为特定比较返回false,相反的情况返回true.
快乐的编码.
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |