根据Visual Studio,这不行:

var foo = null;

但这没关系:
var foo = false ? (double?)null : null;

为什么? (double?)null是否还会影响else分支中的null

最佳答案

隐式类型变量声明/赋值有两个目的:

  • 决定变量的值,
  • 决定变量的类型。

  • 您的第一个声明的值带有null,而无法确定类型(它可以是从System.ObjectNullable<T>派生的任何内容)。这就是为什么它是一个错误。

    您的第二个声明由于类型转换而将类型精确定位为Nullable<double>。这就是C#允许的原因。

    不用说double? foo = null会更容易阅读。

    关于c# - 无法将null分配给隐式类型的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48442932/

    10-17 02:08