C#问号运算符后固定为cast

C#问号运算符后固定为cast,c#,operators,C#,Operators,我看着页面,看到了这段简洁的代码: new { Age = (int?)null, Id = guid }); (int?)null的作用是什么 有人能解释一下那里发生了什么,也许能给出一个更“详细”的代码版本吗?int?是Nullable的缩写。因此,这行代码正在将null(默认情况下为object类型)转换为null int 文档:如果您只有new{Age=null},编译器无法知道Age的确切类型。因此,将null强制转换为null有效地告诉它Age属性属于该类型。?标记一个int

我看着页面,看到了这段简洁的代码:

   new { Age = (int?)null, Id = guid });
(int?)null的作用是什么


有人能解释一下那里发生了什么,也许能给出一个更“详细”的代码版本吗?

int?
Nullable
的缩写。因此,这行代码正在将null(默认情况下为
object
类型)转换为null int


文档:

如果您只有
new{Age=null}
,编译器无法知道
Age
的确切类型。因此,将
null
强制转换为
null
有效地告诉它
Age
属性属于该类型。

标记一个int


它是
((System.Nullable)null)

的语法符号,这是一个:年龄的类型必须从分配给它的值中隐含
null
可以是任何可为null的类型。cast指定
Age
应该具有的类型:
int?
(aka
Nullable

作为最早的答案,并且其中还包含指向文档的链接以供我进一步阅读,我将对此进行答案检查。其他答案也在解释,阿尔宾的答案是扩展速记,谢尔盖的答案是“匿名类型”和关于
null
的解释,安东的答案是关于编译器如何推断年龄类型的进一步解释。再次感谢大家。