【问题标题】:Check for negative numbers with TryParse使用 TryParse 检查负数
【发布时间】:2013-02-19 22:13:45
【问题描述】:

是否可以使用Int32.TryParse 来检查负数?

int defaultTop;
displayTop = (Int32.TryParse(DisplayTop, out defaultTop) ? Convert.ToInt32(DisplayTop) : 1000 );

【问题讨论】:

  • 你想要完成什么?如果它是一个有效的整数,那么它将被转换,无论它是负数还是正数。如果它不是一个有效的 Int 那么它将失败...
  • 不直接使用 TryParse。但是为什么不在 defaultTop 被解析后检查它本身呢?
  • 我将 DisplayTop 传递给 Storedproc 以获取 DisplayTop 的最高行数。

标签: c# tryparse


【解决方案1】:

为什么不使用UInt32.TryParse(DisplayTop, out defaultTop)

如果数字为 0 或正则返回 true,如果为负则返回 false。

【讨论】:

    【解决方案2】:

    试试这个

    int defaultTop;
    var isValidInt = Int32.TryParse(DisplayTop, out defaultTop);
    displayTop = isValidInt && defaultTop >= 0 ? defaultTop : 1000;
    

    【讨论】:

      【解决方案3】:

      您不能单独使用 TryParse 执行此操作,您必须单独检查 defaultTop 的值。如果您想在一行中完成所有操作,可以尝试:

      displayTop = ((Int32.TryParse(DisplayTop, out defaultTop) && defaultTop >= 0) ? defaultTop : 1000 );
      

      【讨论】:

      • 为什么要转换第二次?可以直接使用defaultTop
      • @TimSchmelter - 你是对的!哦,邪恶或盲目复制/粘贴。
      【解决方案4】:

      使用 Math.Max:

      displayTop = Math.Max(1,(Int32.TryParse(DisplayTop, out defaultTop) ? Convert.ToInt32(DisplayTop) : 1000 ));
      

      当然,这么长的表达式有点难看,但确实有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-08
        • 1970-01-01
        • 2012-02-18
        • 2015-02-10
        • 2010-11-10
        • 2011-01-08
        相关资源
        最近更新 更多