在对父对象进行空条件检查后检查可为空的 属性
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;
感谢有一些问题接近我的要求,但不太像这里的问题。我一直在检查 ?。操作员和我遇到了以下情况。情况如下:
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;