在C#中将字符串转换为整数时出现异常

4
我遇到了错误:格式异常未处理,输入的字符串不是正确的格式。对于以下这行代码:
``` ```
int right = System.Convert.ToInt32(rightAngleTB.Text);

rightAngleTB是文本框,值为"25"(不带引号)。


我真的不明白问题在哪里:(


4
我愿意打赌并说 rightAngleTB.Text 不包含文本 25 - BrokenGlass
你确定值文本只是 25 吗?里面没有任何额外的字符,比如小数点或多余的空格吗?Convert.ToInt32 肯定能够将字符串 25 转换为整数。 - matt
@BrokenGlass 你说得对 - 我把文本框放在标签下面,但不幸的是我把标签命名为rightAngleTB而不是文本框..当你点击错误对象时会出现可恶的错误:/ - user1097772
3个回答

10

你真的应该使用 int.TryParse。它更容易进行类型转换并且不会抛出异常。


2
我经常注意到用户在输入时有时会有前导或尾随空格。使用.Trim()将去除前导和尾随空格。然后,如果修剪后的文本是整数,则TryParse将给出一个int而不会抛出异常。
请使用以下内容:
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...)


1

请尝试下面的代码。

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);
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接