我正在尝试单行if语句如下,我有理由得到错误。我该怎么做?
int? n;
n = (reader[0] == null)? null : Convert.ToInt32(reader[0]);
答案 0 :(得分:8)
明确地投射到int?
,如:
n = (reader[0] == null)? null :(int?) Convert.ToInt32(reader[0]);
或者:
n = (reader[0] == null) ? (int?) null : Convert.ToInt32(reader[0]);
答案 1 :(得分:0)
你真的需要一个if语句吗?
n = (int?) reader[0];
答案 2 :(得分:0)
哈比卜的回答是正确的。但是,我有时会发现以下约定更容易阅读:
int? n = null;
if (reader[0] != null)
n = Convert.ToInt32(reader[0]);
答案 3 :(得分:0)
我会避免在一行代码中尝试做太多事情。
它的可维护性较差,可读性较差,无论如何都会编译成相同的MSIL。
这样的东西更具可读性:
int? number = null;
if (reader[0] != null)
{
number = Convert.ToInt32(reader[0]);
}