如果为null或int返回单行

时间:2014-01-28 15:04:57

标签: c# if-statement integer nullable dbnull

我正在尝试单行if语句如下,我有理由得到错误。我该怎么做?

int? n;
n = (reader[0] == null)? null : Convert.ToInt32(reader[0]);

4 个答案:

答案 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]);
}