2010-04-29 62 views

回答

21

最好的是default(int?),因为它总是按预期工作(引用类型,值类型,甚至泛型)。

+0

以前没见过,我喜欢它!我一直使用(int?)null,并总是觉得它笨重。 – 2010-04-29 17:51:05

5

我倾向于将(int?)表示法更改为Nullable<int>。该语言提供了这种语法糖,所以我尝试使用它。

这也是我称之为int而不是Int32的原因。

1

有趣的是,你只需要定义一个返回类型。换句话说,这也将工作:

return Int32.TryParse(Request["id"], out i) ? (int?)i : null; 

...即使编译器建议你投空: 类型条件表达式不能确定,因为有“廉政”之间的隐式转换'< null>'

2

为你做什么最清楚。

这就是说,我宁愿只返回null,编译器会计算出细节。

5

没关系,它会生成完全相同的代码。由C#编译器将(int?)null转换为new Nullable<int>()。你可以通过编写一个小测试程序来查看它,并用ildasm.exe来查看它。所以“更好”仅仅是你喜欢的风格。一致的使用int?将是我个人的偏好。

一个实用的注意事项:在典型的调试会话中,您可能很有兴趣了解null返回。特别是因为你读的数据不会产生你所期望的。如果您在单独一行中写回归返回语句,这变得非常简单:

int i; 
    if (Int32.TryParse(Request["id"], out i)) return i; 
    else return null;  // <== set breakpoint here. 

也摆脱了演员阵容。并生产完全相同的代码

相关问题