Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从值中减去可为空的十进制null_C#_.net_C# 4.0_Decimal_Nullable - Fatal编程技术网

C# 从值中减去可为空的十进制null

C# 从值中减去可为空的十进制null,c#,.net,c#-4.0,decimal,nullable,C#,.net,C# 4.0,Decimal,Nullable,今天我遇到了一个奇怪的行为,C#中的小数可以为空 从某个值中减去一个空值即为空 例如: 2300.00-空=空:( 为什么我得到的是空值而不是2300 此行为符合null的“未知值”含义:当您从2300中减去未知值时,您将得到一个未知值 如果要将nullable中的nulls视为零,请使用null合并运算符: var result=(a ?? 0) - (b ?? 0); 检查: 预定义的一元和二元运算符或任何重载运算符 值类型T支持的 对应的可空值类型T?。这些运算符也称为 提升运算符,如果

今天我遇到了一个奇怪的行为,C#中的小数可以为空

从某个值中减去一个空值即为空

例如:

2300.00-空=空:(

为什么我得到的是空值而不是2300


此行为符合
null
的“未知值”含义:当您从2300中减去未知值时,您将得到一个未知值

如果要将nullable中的
null
s视为零,请使用null合并运算符:

var result=(a ?? 0) - (b ?? 0);
检查:

预定义的一元和二元运算符或任何重载运算符 值类型
T
支持的 对应的可空值类型
T?
。这些运算符也称为 提升运算符,如果一个或两个操作数均为
null
,则生成
null


所以,这是经过设计的。所有带null的操作都会产生null值。

null不是一个数字。它是一个未知值。六个苹果减去“未知”等于多少个?它等于“未知量”

如果一个值是可空的,你不应该做一个空检查吗?2300-iHavenoidia==iHavenoidia,这是唯一明智的行为。这类似于当一个项是双项时用双项计算。NaN不确定为什么这个问题被否决,即使它有一个相当明显的答案…@MatthewWatson我猜,因为它是一个duplicate说两秒钟的搜索就能回答。。。
var result=(a ?? 0) - (b ?? 0);