【问题标题】:Exception while converting String to integer in C#在 C# 中将字符串转换为整数时出现异常
【发布时间】:2012-04-27 20:06:58
【问题描述】:


我收到错误:未处理格式异常,输入字符串的格式不正确。
对于这一行:

int right = System.Convert.ToInt32(rightAngleTB.Text);

rightAngleTB 是 TextBox,值 Text 是“25”(没有“”)。

我真的没有看到问题:(

【问题讨论】:

  • 我打赌说rightAngleTB.Text 不包含文字25
  • 确定值文本只是25吗?那里没有任何额外的字符,例如小数位或多余的空格? Convert.ToInt32 绝对应该能够将25 的字符串转换为int。
  • @BrokenGlass 你是对的 - 我在标签下有那个文本框,不幸的是我用名称 rightAngleTB 而不是文本框命名了标签.. 当你点击坏对象时该死的错误:/

标签: c# exception type-conversion


【解决方案1】:

你真的应该使用int.TryParse。转换更容易,不会出现异常。

【讨论】:

    【解决方案2】:

    我经常注意到用户有时会在输入中包含前导或尾随空格。使用 .Trim() 将摆脱前导和尾随空格。然后 TryParse 会给你一个 int (如果修剪后的 Text 是一个整数)而不抛出异常

    使用以下内容:

    int right = 0;  //Or you may want to set it to some other default value
    
    if(!int.TryParse(rightAngleTB.Text.Trim(), out right))
    {
        // Do some error handling here.. Maybe tell the user that data is invalid.
    }
    
    // do the rest of your coding..  
    

    如果上述 TryParse 失败,则 right 的值将是您在上面的声明中设置的值。 (在这种情况下为 0...)

    【讨论】:

      【解决方案3】:

      试试下面的代码。

      using System;
      
      public class StringParsing
      {
      public static void Main()
      {
        // get rightAngleTB.Text here
        TryToParse(rightAngleTB.Text);
      }
      
      private static void TryToParse(string value)
      {
        int number;
        bool result = Int32.TryParse(value, out number);
        if (result)
        {
           Console.WriteLine("Converted '{0}' to {1}.", value, number);         
        }
        else
        {
           if (value == null) value = ""; 
           Console.WriteLine("Attempted conversion of '{0}' failed.", value);
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-28
        • 2021-10-06
        • 1970-01-01
        • 1970-01-01
        • 2015-12-31
        • 2016-02-21
        相关资源
        最近更新 更多