int a = Convert.ToInt32(subjectsLabel1.Text);
int b = int.Parse(internetLabel1.Text);
int total = a+b;
label1.Text = total.ToString();
错误“输入字符串的格式不正确。”不断涌现。 我尝试使用“int.parse”和“convert.toint32”语法进行转换,但同样的错误不断出现。
* subjectLabel1和internetlabel1中的值将来自数据库(在visual studio中完成)w / datatype varchar(10)。
答案 0 :(得分:3)
将这些字符串值解析为整数的方式没有任何问题。只是它们的值不代表有效整数,因此无法解析它并抛出异常。你可以使用int.TryParse方法优雅地处理这种情况:
int a;
int b;
if (!int.TryParse(subjectsLabel1.Text, out a))
{
MessageBox.Show("please enter a valid integer in subjectsLabel1");
}
else if (!int.TryParse(internetLabel1.Text, out b))
{
MessageBox.Show("please enter a valid integer in internetLabel1");
}
else
{
// the parsing went fine => we could safely use the a and b variables here
int total = a + b;
label1.Text = total.ToString();
}
答案 1 :(得分:0)
如果您不确定用户是否为您提供合法的Int32值,您可以使用:
int result;
if (!int.TryParse(subjectsLabel.Text, out result))
{
ShowAMessageToTheUser();
}
else
{
UseResult();
}
当您尝试解析字符串时,使用TryParse不会产生异常。相反,它将返回false并且out参数无效。
答案 2 :(得分:0)
如果字符串包含小数点或不是有效整数,则无法转换为Int32。检查
string test = "15.00"
int testasint = Convert.ToInt32(test); //THIS WILL FAIL!!!
因为Int32不支持小数。如果需要使用小数,请使用Float或Double。
所以在这种情况下你可以使用
int.TryParse
也