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?