我今天在C#中遇到了一个带有可为空的小数的奇怪行为。
从某个值中减去空值会得到null。
示例:
2300.00 - null = null:(
using System;
public class Program
{
public static void Main()
{
decimal? a=2300.00m;
decimal? b=null;
var result=a-b;
Console.WriteLine("Result is {0}",result);
}
}
为什么我得到的是null而不是2300?
答案 0 :(得分:4)
此行为符合null
"未知值"的含义:当您从2300中减去未知值时,您将获得未知值。
如果您希望将可空值中的null
视为零,请使用null coalesce运算符:
var result=(a ?? 0) - (b ?? 0);
答案 1 :(得分:2)
Null不是数字。这是一个未知的价值。减去“未知”的六个苹果等于多少?它等于“未知数量。”
答案 2 :(得分:1)
检查MSDN:
预定义的一元和二元运算符以及任何用户定义的 存在于值类型的运算符也可以由nullable使用 类型。如果操作数为null,则这些运算符产生空值;
所以,这是设计的。所有null操作都将产生空值。