C#问号运算符后缀为强制转换

时间:2011-08-09 12:05:46

标签: c# operators

我正在查看dapper页面,看到了这段简洁的编码:

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

(int?)null做什么?

有人可以请说明那里发生了什么,也许会给出一个更“冗长”的代码版本吗?

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

如果您拥有的只是new { Age = null },编译器无法知道Age的确切类型。因此,“nullNullable<Int32>”有效地告诉它Age属性属于该类型。

答案 2 :(得分:2)

这是anonymous type:必须从分配给它的值中暗示Age的类型。 null可以是任何可空类型。演员表指定Age应具有的类型:int?(又名Nullable<int>

答案 3 :(得分:1)

?标记为Nullable int

这是((System.Nullable<int>)null)的语法简写。