【问题标题】:Do you know how to parse a string to nullable<int>? [closed]你知道如何将字符串解析为 nullable<int> 吗? [关闭]
【发布时间】:2012-01-25 00:05:39
【问题描述】:

我正在寻找一个将字符串转换为可为空的 int 的函数。但是这个必须返回一个布尔值。

【问题讨论】:

  • 这不是一个功能规范。什么字符串应该产生空值?布尔值究竟是如何涉及的?

标签: c# int nullable


【解决方案1】:

这样的?

    public int? NullableInt(string str)
    {
        int i;
        if (int.TryParse(str, out i))
            return i;
        return null;
    }

【讨论】:

    【解决方案2】:

    这应该可以解决问题:

    string str = "1234";
    int number = 0;
    int.TryParse(str, out number);
    Nullable<int> result = new Nullable<int>(number);
    

    【讨论】:

      【解决方案3】:

      可能是这样的:

      public static int? TryParse(string str)
      {
          int result;
          if (Int32.TryParse(str, out result))
          {
              return result;
          }
          else
          {
              return null;
          }
      }
      

      如果解析失败,则返回空值,否则返回解析成功的值。

      【讨论】:

        【解决方案4】:

        您始终可以将string 解析为int 并将结果分配给int? 例如:

        string myNumericString = "1234";
        int? x = Int32.Parse(myNumericString);
        

        你也可以试试:

        int? x = null;
        int result;
        if (Int32.TryParse(myNumericString, out result) )
        {
            x = result;
        }
        
        // Then you can check x.HasValue
        

        【讨论】:

        • Int32.Parse(null) 引发ArgumentNullException。如果成功,它总是返回int。所以存储到int? 完全没有效果。
        • 正确。该示例假设幸福路径(即myNumericString"1234")。为了安全起见,你应该使用Int32.TryParse(string, out int),它返回true,如果解析成功,则将解析后的整数值赋给out参数。
        猜你喜欢
        • 2021-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多