十进制可空和十进制值的总和

use*_*794 4 c#

为什么这个代码执行变量'a'包含null而不是10?

decimal? a = null;
a += 10;
Run Code Online (Sandbox Code Playgroud)

Chr*_*tos 5

您无法添加值null.null无论你添加什么值,它都将为null.另一方面,如果您已经a为10添加了非空值,则会添加到a.

取自MSDN

预定义的一元和二元运算符以及值类型存在的任何用户定义的运算符也可以由可空类型使用.如果操作数为null,则这些运算符产生空值; 否则,运算符使用包含的值来计算结果.例如:

int? a = 10;
int? b = null;

a++;         // Increment by 1, now a is 11.
a = a * 10;  // Multiply by 10, now a is 110.
a = a + b;   // Add b, now a is null.
Run Code Online (Sandbox Code Playgroud)

  • 另外,值得一提的是OP可以使用`Nullable <T> .GetValueOrDefault`来获取对象的默认值,对于`decimal`,该值为0. (2认同)