为什么在对int变量+ int变量求和时,我得到两个数字作为结果?

jon*_*neK 0 c#

这是我的代码:

this.Invoke(new MethodInvoker(delegate {
    label13.Text = e.failedUrls + doneWebPages.ToString();
}));
Run Code Online (Sandbox Code Playgroud)

结果是:01,02,03,04 ..... 09,111

当e.failedUrls现在是例如1并且doneWebPages是22时所以在label13中显示我,总和23我看到122.

怎么了 ?

jas*_*son 6

你正在添加int一个string1.语言的规则将导致编译器发出的指令转换成2int一个string,因此你看到string串联.从而

如果e.failedUrls1,你说的,doneWebPages22,也正如你所说,那么

e.failedUrls + doneWebPages.ToString()
Run Code Online (Sandbox Code Playgroud)

会导致

1.ToString() + "22"
Run Code Online (Sandbox Code Playgroud)

这将导致

"1" + "22"
Run Code Online (Sandbox Code Playgroud)

这是"122",正如你看到的.如果你想要整数运算,你想要的是:

label13.Text = (e.failedUrls + doneWebPages).ToString();
Run Code Online (Sandbox Code Playgroud)

也就是说,首先添加数字,然后调用ToString结果.

1:我认为这e.failedUrls是一个int因为你似乎认为它是一个int.显然,doneWebPages.ToString()是一个string,但我认为这doneWebPages是一个, int因为你似乎也认为它是一个int.

2:有一个操作者+所定义的String具有参数+(object x, string y).语义+

x + y -> x != null ? (x.ToString() ?? "") + y : "" + y;
Run Code Online (Sandbox Code Playgroud)