在对父对象进行空条件检查后检查可为空的 属性

Checking a nullable property after a null-conditional check of parent object

感谢有一些问题接近我的要求,但不太像这里的问题。我一直在检查 ?。操作员和我遇到了以下情况。情况如下:

internal class Dog
{
   public int? Age { get; set; }
}

检查主要代码如下:

Dog d2 = new Dog() { Age = 10 };  
int age1 = d2.Age.Value; // compiles okay
int age2 = d2?.Age.Value; // CS0266

我想知道为什么带有 age3 的代码行要求显式转换。 d2.Age 是 int 类型? Age.Value 类型为 int 在两种用法之间没有变化。

使用空条件运算符后,结果值可以是 null。这就是为什么它永远不可能 int.

您需要的是:

int age2 = (d2?.Age).Value;