假设我们有外显:
int? someValue = SomeCondition ? 1 : (int?)null;
所以当SomeCondition为假时,
(int?)null
评估并将成为int的新实例?此时创建的是否已分配给someValue?
答案 0 :(得分:7)
当SomeCondition为false时,三元运算符表达式的值将为null
。
(int?)
之前的null
只是投射它(不是创建新对象)。
由于编译器强制表达式的两个可能返回值具有相同类型(或可转换为公共类型),因此需要强制转换。因此,在这种情况下,编译器会看到int
(1
的类型)和int?
(null
的转换类型)可转换为{{1} }。如果没有强制转换,编译器无法协调(int?)
和null
,因为值类型不能为null,并且null没有自己的自然类型。
您也可以将int
强制转换应用于1以达到相同的效果。