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

Ale*_*der 1 c# casting

假设我们有外显:

int? someValue = SomeCondition ? 1 : (int?)null;
Run Code Online (Sandbox Code Playgroud)

所以当SomeCondition为假时,

(int?)null
Run Code Online (Sandbox Code Playgroud)

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

Cam*_*ron 7

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

(int?)null刚刚浇注它(不创建一个新的对象).

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

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