字符串被视为' bool'在TryParse之后转到int

时间:2015-05-02 10:06:36

标签: c# type-conversion tryparse

我尝试将文本输入转换为int我可以繁殖并显示产品,但每当我尝试将文本框内容解析为int时,我都会得到&# 34;无法将bool转换为int" 错误消息。代码如下:

private void button2_Click_1(object sender, EventArgs e)
{
    int Int1;
    int Int2;
    int Product;
    string Text1;
    string Text2;
    Text2 = textBox2.Text;
    Text1 = textBox1.Text;
    Int1 = int.TryParse(Text1, out Int1);
    Int2 = int.TryParse(Text2, out Int2);
    Product = Int1 * Int2;
    listBox1.Items.Add(textBox1.Text);
    listBox1.Items.Add(textBox2.Text);
    listBox1.Items.Add(Product);
}

不要知道我哪里出错了。

8 个答案:

答案 0 :(得分:2)

TryParse返回boolean,它告诉您解析是否成功。尝试

CategoryStore

答案 1 :(得分:2)

这种情况正在发生,因为int.TryParse(Text1, out Int1); int.TryParse(Text2, out Int2); 返回TryParse结果位于带有bool的参数中,以解决您可以删除归因的问题。

out

如果您使用int.TryParse(Text1, out Int1); int.TryParse(Text2, out Int2); Product = Int1 * Int2; ,则应在TryParse中使用,以检查一切是否成功。

if

如果您不需要此行为,则应考虑使用if(int.TryParse(Text1, out Int1) && int.TryParse(Text2, out Int2)) { Product = Int1 * Int2; listBox1.Items.Add(textBox1.Text); listBox1.Items.Add(textBox2.Text); listBox1.Items.Add(Product); } ,因为它会返回已解析的值。

Parse

答案 2 :(得分:1)

很自然。 TryParse返回布尔值。 out 参数是TryParse的结果。查看此帖子:How the int.TryParse actually works

答案 3 :(得分:1)

TryParse根据成功或失败的尝试返回true或false。如果您确定用户仅输入数字,则可以使用

Int1=int.Parse(textBox1.Text)
Int2=int.Parse( textBox2.Text)

答案 4 :(得分:1)

TryParse()返回boolout参数已经解析了值Int1Int2如果解析成功,您必须这样做:< / p>

if(!int.TryParse(Text1, out Int1))
{
// show validation message
return;
}
if(!int.TryParse(Text2, out Int2))
{
// value not valid int
return;
}
当我们想要控制程序流时使用

TryParse(),你必须使用if块来处理它,否则无效输入会导致程序抛出异常

  
    

输入字符串的格式不正确

  

答案 5 :(得分:1)

您的代码将int.TryParse的结果分配给您的int。它不能,因为返回值是一个bool,表明解析是否有效。

Int1 = int.TryParse(Text1, out Int1);

详细了解documentation

答案 6 :(得分:1)

试试这个..

Int1 = int.Parse(textBox1.Text);

答案 7 :(得分:1)

您应该使用TryParse的返回值来确定解析是否成功。它返回bool表示文本已转换为int,因此您应该按如下方式更改代码:

private void button2_Click_1(object sender, EventArgs e) {
    int Int1;
    int Int2;
    int Product;
    string Text1;
    string Text2;
    Text2 = textBox2.Text;
    Text1 = textBox1.Text;
    listBox1.Items.Add(textBox1.Text);
    listBox1.Items.Add(textBox2.Text);
    if( int.TryParse(Text1, out Int1) && int.TryParse(Text2, out Int2)) {
        Product = Int1 * Int2;
        listBox1.Items.Add(Product);
    } else {
        listBox1.Items.Add("<incorrect input>");
    }
}

如果TryParse个来电之一的返回值为false,则不会计算产品,并会显示错误消息&#34;&#34;已添加到listBox1而非产品。