C#中的速记JavaScript等价物

fre*_*hie 0 c# nullable

我有一个可以为空的字节,我想增加或设置为0取决于它是否为null,如下所示:

if (TheNullableByte == null)
{
   TheNullableByte = 0;
}
else
{
   TheNullableByte = TheNullableByte++;
}
Run Code Online (Sandbox Code Playgroud)

在javascript中我会这样写:

TheNullableByte = (TheNullableByte) ? TheNullableByte++ : 0;
Run Code Online (Sandbox Code Playgroud)

C#中有类似的东西吗?

Fed*_*uma 7

这应该是最短的构造:

TheNullableByte = ++TheNullableByte ?? 0;
Run Code Online (Sandbox Code Playgroud)

使用null-coalescing运算符.

小解释:

假设TheNullableByte是一个byte?没有值的变量(它是null)++TheNullableByte不改变它的值(表达式结果是null).最后你有0(如果是null)或者值增加1.

  • 这个问题解决了为什么*++运算符*适用于这种情况:http://stackoverflow.com/questions/29172558/why-doesnt-incrementing-nullableint-throw-an-exception (2认同)