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

Mur*_*san 2 .net c# nullable decimal c#-4.0

我今天在 C# 中遇到了一个带有可为空小数的奇怪行为。

从某个值中减去空值给出空值。

例子:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我得到的是 null 而不是 2300?

小提琴

das*_*ght 5

这种行为符合null“未知值”的含义:当你从 2300 中减去一个未知值时,你会得到一个未知值。

如果您希望nullnullable 中的 s 被视为零,请使用 null 合并运算符:

var result=(a ?? 0) - (b ?? 0);
Run Code Online (Sandbox Code Playgroud)

演示。