C#是可空十进制数的可空整数后代

C#是可空十进制数的可空整数后代,c#,decimal,nullable,C#,Decimal,Nullable,我错误地发现了一些令我吃惊的东西 我有这个方法 public static string PrintDecimal(decimal? input, string NumberFormat = null){ } 我这样称呼这个方法 int? MaxFaltas = 0; Label.Text = CustomConvert.PrintDecimal(MaxFaltas); 为什么这是工作,没有编译错误。我正在调用一个方法,该方法被定义为接收带有int?的decimal?,因为int可以隐式转换

我错误地发现了一些令我吃惊的东西

我有这个方法

public static string PrintDecimal(decimal? input, string NumberFormat = null){ }
我这样称呼这个方法

int? MaxFaltas = 0;
Label.Text = CustomConvert.PrintDecimal(MaxFaltas);

为什么这是工作,没有编译错误。我正在调用一个方法,该方法被定义为接收带有
int?
decimal?
,因为int可以隐式转换为十进制,因此可以隐式转换为null版本

FROM   TO
int    long , float, double, or decimal


您刚刚发现了规范中描述为的内容

它们允许您将
Nullablt
转换为
Nullable
,只要
A
可以转换为
B

6.4.2提升的转换运算符

给定一个从 非空值类型
S
到非空值类型
T
,一个 存在从
S?
转换为
T?
的转换运算符。这解除了 转换运算符执行从
S?
S
的展开,然后执行 从
S
T
的用户定义转换,然后从
T
T?
,除非
null
S?
直接转换为
null
T?