【发布时间】:2014-02-19 23:08:17
【问题描述】:
我正在尝试如下的单行 if 语句,但我得到了合理的错误。我应该怎么做?
int? n;
n = (reader[0] == null)? null : Convert.ToInt32(reader[0]);
【问题讨论】:
-
注意null和DBNull的区别
标签: c# if-statement integer nullable dbnull
我正在尝试如下的单行 if 语句,但我得到了合理的错误。我应该怎么做?
int? n;
n = (reader[0] == null)? null : Convert.ToInt32(reader[0]);
【问题讨论】:
标签: c# if-statement integer nullable dbnull
我会避免尝试在一行代码中做太多事情。
它的可维护性较差,可读性较差,并且无论如何它都会编译成相同的 MSIL。
这样的东西更具可读性:
int? number = null;
if (reader[0] != null)
{
number = Convert.ToInt32(reader[0]);
}
【讨论】:
哈比卜的回答是正确的。但是,我有时会发现以下约定更容易阅读:
int? n = null;
if (reader[0] != null)
n = Convert.ToInt32(reader[0]);
【讨论】:
你真的需要 if 语句吗?
n = (int?) reader[0];
【讨论】:
显式转换为int? 喜欢:
n = (reader[0] == null)? null :(int?) Convert.ToInt32(reader[0]);
或者:
n = (reader[0] == null) ? (int?) null : Convert.ToInt32(reader[0]);
【讨论】:
null