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