【问题标题】:Single line if null or int return如果 null 或 int 返回单行
【发布时间】: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


【解决方案1】:

我会避免尝试在一行代码中做太多事情。

它的可维护性较差,可读性较差,并且无论如何它都会编译成相同的 MSIL。

这样的东西更具可读性:

int? number = null;

if (reader[0] != null)
{
    number = Convert.ToInt32(reader[0]);
}

【讨论】:

    【解决方案2】:

    哈比卜的回答是正确的。但是,我有时会发现以下约定更容易阅读:

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

    【讨论】:

      【解决方案3】:

      你真的需要 if 语句吗?

      n = (int?) reader[0];
      

      【讨论】:

        【解决方案4】:

        显式转换为int? 喜欢:

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

        或者:

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

        【讨论】:

        • 顺便说一句,你也可以投 null
        • @SergeyBerezovskiy,是的。这是真的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多