String 在 TryParse to int 之后被认为是 'bool'
String is considered 'bool' after TryParse to int
我正在尝试将文本输入转换为可以相乘并显示乘积的 int
,但是每当我尝试将文本框内容解析为 int 时,我都会得到 "cannot convert bool to 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);
}
没看出我错在哪里。
这是自然的。 TryParse returns 布尔值。 out参数是TryParse的结果。检查此 post:How the int.TryParse actually works
TryParse returns 布尔值,告诉你解析是否成功。尝试
int.TryParse(Text1, out Int1);
int.TryParse(Text2, out Int2);
发生这种情况是因为TryParse
returns一个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
,因为它 returns 已解析的值。
Int1 = int.Parse(Text1);
Int2 = int.Parse(Text2);
Product = Int1 * Int2;
TryParse returns true 或 false 基于其成功或不成功的尝试。如果您确定用户只输入数字,您可以使用
Int1=int.Parse(textBox1.Text)
Int2=int.Parse( textBox2.Text)
TryParse()
returns bool
和 out
参数已经解析了值 Int1
和 Int2
如果解析成功你有这样做:
if(!int.TryParse(Text1, out Int1))
{
// show validation message
return;
}
if(!int.TryParse(Text2, out Int2))
{
// value not valid int
return;
}
TryParse()
当我们想要控制程序流时使用,你必须使用 if
块来处理它,否则在无效输入时你的程序将抛出异常
Input string was not in a correct format
您的代码正在将 int.TryParse 的结果分配给您的 int。它不能,因为 return 值是一个布尔值,指示解析是否有效。
Int1 = int.TryParse(Text1, out Int1);
查看 documentation 了解详情。
试试这个..
Int1 = int.Parse(textBox1.Text);
您应该使用 TryParse
的 return 值来决定解析是否成功。它 returns 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
调用之一的 return 值为 false
时,不会计算乘积,而是将错误消息“”添加到 listBox1
产品。
我正在尝试将文本输入转换为可以相乘并显示乘积的 int
,但是每当我尝试将文本框内容解析为 int 时,我都会得到 "cannot convert bool to 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);
}
没看出我错在哪里。
这是自然的。 TryParse returns 布尔值。 out参数是TryParse的结果。检查此 post:How the int.TryParse actually works
TryParse returns 布尔值,告诉你解析是否成功。尝试
int.TryParse(Text1, out Int1);
int.TryParse(Text2, out Int2);
发生这种情况是因为TryParse
returns一个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
,因为它 returns 已解析的值。
Int1 = int.Parse(Text1);
Int2 = int.Parse(Text2);
Product = Int1 * Int2;
TryParse returns true 或 false 基于其成功或不成功的尝试。如果您确定用户只输入数字,您可以使用
Int1=int.Parse(textBox1.Text)
Int2=int.Parse( textBox2.Text)
TryParse()
returns bool
和 out
参数已经解析了值 Int1
和 Int2
如果解析成功你有这样做:
if(!int.TryParse(Text1, out Int1))
{
// show validation message
return;
}
if(!int.TryParse(Text2, out Int2))
{
// value not valid int
return;
}
TryParse()
当我们想要控制程序流时使用,你必须使用 if
块来处理它,否则在无效输入时你的程序将抛出异常
Input string was not in a correct format
您的代码正在将 int.TryParse 的结果分配给您的 int。它不能,因为 return 值是一个布尔值,指示解析是否有效。
Int1 = int.TryParse(Text1, out Int1);
查看 documentation 了解详情。
试试这个..
Int1 = int.Parse(textBox1.Text);
您应该使用 TryParse
的 return 值来决定解析是否成功。它 returns 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
调用之一的 return 值为 false
时,不会计算乘积,而是将错误消息“”添加到 listBox1
产品。