aba*_*hev 12 .net c# casting nullable null-cast
在这样的表达式中首选哪种方式:
int? Id
{
get
{
int i;
return Int32.TryParse(Request["id"], out i) ? i : (int?)null;
}
}
Run Code Online (Sandbox Code Playgroud)
是否更好地施放null或创造new Nullable<T>?
没关系,它生成完全相同的代码. (int?)null由C#编译器翻译成new Nullable<int>().您可以通过编写一个小型测试程序并使用ildasm.exe查看它来自行查看
所以"更好"只是你喜欢的风格.一致使用int?这将是我个人的偏好.
一个实际的注意事项:在典型的调试会话中,您可能有兴趣发现返回null.特别是因为您阅读的数据不会产生您期望的结果.如果在单独的行上编写null-return语句,那将变得非常容易:
int i;
if (Int32.TryParse(Request["id"], out i)) return i;
else return null; // <== set breakpoint here.
Run Code Online (Sandbox Code Playgroud)
摆脱演员也是如此.并生成完全相同的代码