Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串被认为是';布尔';在TryParse到int之后_C#_Type Conversion_Tryparse - Fatal编程技术网

C# 字符串被认为是';布尔';在TryParse到int之后

C# 字符串被认为是';布尔';在TryParse到int之后,c#,type-conversion,tryparse,C#,Type Conversion,Tryparse,我正试图将文本输入转换成一个int,这样我就可以乘法并显示乘积,但每当我试图将文本框内容解析为int时,就会收到“cannotconvert bool to int”错误消息。代码如下: private void button2_Click_1(object sender, EventArgs e) { int Int1; int Int2; int Product; string Text1; string Text2; Text2 = text

我正试图将文本输入转换成一个
int
,这样我就可以乘法并显示乘积,但每当我试图将文本框内容解析为int时,就会收到“cannotconvert 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);
}
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返回布尔值out参数是TryParse的结果。检查这篇文章:

TryParse返回布尔值,它告诉您解析是否成功。试一试

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

如果你不需要这个行为,你应该考虑使用<代码>解析> <代码>,因为它返回解析值。

Int1 = int.Parse(Text1);
Int2 = int.Parse(Text2);
Product = Int1 * Int2;

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

Int1=int.Parse(textBox1.Text)
Int2=int.Parse( textBox2.Text)
TryParse()
返回
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()

输入字符串的格式不正确


您的代码正在将int.TryParse的结果分配给您的int。这是不可能的,因为返回值是一个bool,指示解析是否有效

Int1 = int.TryParse(Text1, out Int1);
请查看以了解详细信息。

试试这个

Int1 = int.Parse(textBox1.Text);

您应该使用
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;
    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);
}
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>");
    }
}
private void按钮2\u单击1(对象发送者,事件参数e){
int Int1;
int Int2;
int产品;
字符串Text1;
字符串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)){
产品=Int1*Int2;
列表框1.Items.Add(产品);
}否则{
listBox1.Items.Add(“”);
}
}

当一个
TryParse
调用的返回值为
false
时,不会计算产品,并且会在
listBox1
中添加一条错误消息“”,而不是一个产品。

它说我可以在7分钟内接受-此限制是否会消失?否,在获得一定声誉后,该限制是否会整体消失?(在以后的某个时间点,我能接受没有时间限制的答案吗)@AB永远不会离开它的
Parse
不是
pars
@EhsanSajjad,是的,输入错误,tnx注意到了我。我编辑。