根据Visual Studio,这不行:
var foo = null;
但这没关系:
var foo = false ? (double?)null : null;
为什么?
(double?)null
是否还会影响else分支中的null
? 最佳答案
隐式类型变量声明/赋值有两个目的:
您的第一个声明的值带有
null
,而无法确定类型(它可以是从System.Object
或Nullable<T>
派生的任何内容)。这就是为什么它是一个错误。您的第二个声明由于类型转换而将类型精确定位为
Nullable<double>
。这就是C#允许的原因。不用说
double? foo = null
会更容易阅读。关于c# - 无法将null分配给隐式类型的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48442932/