在三元运算符C#中转换为Nullable创建新变量?

时间:2011-02-22 05:46:17

标签: c# casting

假设我们有外显:

int? someValue = SomeCondition ? 1 : (int?)null;

所以当SomeCondition为假时,

(int?)null

评估并将成为int的新实例?此时创建的是否已分配给someValue?

1 个答案:

答案 0 :(得分:7)

当SomeCondition为false时,三元运算符表达式的值将为null

(int?)之前的null只是投射它(不是创建新对象)。

由于编译器强制表达式的两个可能返回值具有相同类型(或可转换为公共类型),因此需要强制转换。因此,在这种情况下,编译器会看到int1的类型)和int?null的转换类型)可转换为{{1} }。如果没有强制转换,编译器无法协调(int?)null,因为值类型不能为null,并且null没有自己的自然类型。

您也可以将int强制转换应用于1以达到相同的效果。