尝试用C#尽可能简洁

Bob*_*ler 1 c# nullable

我正在寻找一种更简洁的方式在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.

快乐的编码.

  • 这是[文档]的重要部分(http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx):"当您对可空类型进行比较时,如果其中一个可空类型的值是null和另一个不是,所有比较都评估为false,除了`!=`(不等于). (4认同)