C#问号后缀运营商投

问题描述:

我一直在寻找在dapper页,看到编码这样的简洁位:C#问号后缀运营商投

new { Age = (int?)null, Id = guid }); 

是什么(int?)null办?

有人可以澄清那里发生了什么,也许给一个更“冗长”的代码版本?

int?Nullable<int>的简写。因为这样的这行代码将null(默认为object)转换为null int。

文档:http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

+0

作为最早答案,一个还包含一个链接的文档为我进一步阅读,我要把这一个答案检查。其他答案也阐明了,Albin的扩展速记,Serge的“匿名类型”和关于'null'的解释,以及Anton对进一步解释编译器如何推断Age的类型的解释。再次感谢所有。 – Tim

如果你只有new { Age = null },编译器无法知道什么是Age确切类型的方式。所以“铸造”nullNullable<Int32>有效地告诉它,Age属性是那种类型。

?标志着Nullable INT

这是一个((System.Nullable<int>)null)语法shorhand。

这是一个anonymous typeAge的类型必须从分配给它的值中隐含。 null可以是任何可空类型。演员指定Age应该有类型:int?(又名Nullable<int>