C# 为什么在计算int变量的和时+;int变量i';结果我得到了两个数字?
这是我的代码:C# 为什么在计算int变量的和时+;int变量i';结果我得到了两个数字?,c#,C#,这是我的代码: this.Invoke(new MethodInvoker(delegate { label13.Text = e.failedUrls + doneWebPages.ToString(); })); 结果是:01,02,03,04….09111 例如,当e.failedUrls现在为1,而doneWebPages为22时,则在label13中显示我看到的和23 怎么了?因为您正在添加一个数字和一个字符串 从你的描述来看,e.failedUrls似乎是一个数字 don
this.Invoke(new MethodInvoker(delegate {
label13.Text = e.failedUrls + doneWebPages.ToString();
}));
结果是:01,02,03,04….09111
例如,当e.failedUrls现在为1,而doneWebPages为22时,则在label13中显示我看到的和23
怎么了?因为您正在添加一个数字和一个字符串
- 从你的描述来看,
似乎是一个数字e.failedUrls
是一个字符串donewebpage.ToString()
5+“13”
等于“513”
要解决此问题,请从第二个操作数中删除
.ToString()
调用。然后你会得到类似于5+13
,它等于18
,你在连接字符串。首先使用Int32.Parse()
或Int32.TryParse()
将两个字符串添加到一起。您需要使用int.Parse
将它们强制转换为int
s。您正在向字符串添加int
。该语言的规则将导致编译器发出指令,将int
转换为字符串
,因此您将看到字符串
串联。因此
如果e.failedUrls
如您所说是1
,而donewebpage
如您所说是22
,则
e.failedUrls + doneWebPages.ToString()
将导致
1.ToString() + "22"
"1" + "22"
这将导致
1.ToString() + "22"
"1" + "22"
正如您所看到的,这是“122”
。如果需要整数算术,则需要:
label13.Text = (e.failedUrls + doneWebPages).ToString();
也就是说,首先添加数字,然后调用ToString
,查看结果
1:我假设e.failedUrls
是int
,因为您似乎认为它是int
。显然,doneWebPages.ToString()
是一个字符串
,但我假设doneWebPages
是一个int
,因为您似乎也认为它是一个int
2:在字符串上定义了一个运算符+
,参数为+(对象x,字符串y)
。+
的语义是
x + y -> x != null ? (x.ToString() ?? "") + y : "" + y;
可以肯定的是,您的问题中缺少了很多信息,但让我们假设一个简单的问题:
假设failedUrls
和donewebpage
是整数。然后是表情
label13.Text = e.failedUrls + doneWebPages.ToString();
从内到外进行评估
也就是说,将计算以下子表达式:
e.failedUrls
->一个数字
donewebpage
->一个数字
donewebpage.ToString()
->表示上述数字的字符串
e.failedUrls+donewebpage.ToString()
->连接数字和字符串
您正在添加两个字符串而不是两个整数字符串的+运算符重载,它会导致字符串连接
您使用了e.failedurs+donewebages.ToString()。由于第二个参数是字符串,.NET采用第一个参数的字符串表示形式,并连接了字符串
所以“1”+“22”=“122”
如果需要加法,请确保两个操作数都是int/numbers。尝试将doneWebPages转换为整数表示。虽然我对C#不太熟悉,但似乎因为在调用“+”方法时,您是通过ToString()方法将doneWebPages转换为字符串,所以在字符串连接上下文中使用“+”方法,而不是加法。在将值分配给label13之前,请尝试将e.failedUrls和doneWebPages转换为整数。原因是要添加两个字符串值,必须添加两个整数值
label13.Text = int.Parse(e.failedUrls.ToString() + int.Parse( doneWebPages.ToString())
这样可以解决您的问题它们都是字符串。你认为把两个字符串加在一起会发生什么?