转换增量值

本文关键字:转换 | 更新日期: 2023-09-27 18:08:12

尝试将增量值转换为字符串。

i++.ToString()

以上语句运行良好。

++i.ToString()

这个显示错误行。为什么?

转换增量值

因为在第二个表达式中首先调用iToString()方法,并且++运算符对字符串没有意义。另一方面,在第一个表达式中,将整数i加1,并调用方法ToString()。所以你得到你的号码的字符串表示。你可以转换它,就像ulugbek-umirov在他的评论中指出的那样:

(++i).ToString();

请看这里

这是由于i++++i的操作符优先级不同造成的。

i++属于"Primary"组,而++i属于"Unary"组。但由于.也属于"Primary",因此具有更高的优先级。所以首先执行.ToString。不能在字符串上使用++运算符。

可以用括号括起来:

(++i).ToString()

参考:操作符

因为第二个意思是:

++(i.ToString())  // Oops, compiler error

和字符串类型不能递增

(++i).ToString()就可以了。

该错误是由所应用的操作符的优先级引起的。在您的指令中,您试图将整型自增应用于字符串。如果你想post增量,你应该这样做:

(++i).ToString();

回答和评论说,这是由于任何"先执行"是误导。这个问题是由于.相对于++(前缀)具有更高的优先级。求值的顺序实际上与它无关-特别是因为++i.ToString() 不编译,因此根本没有求值(因此没有发生的顺序)。

参见优先级、结合性和顺序。

你必须选择

make it in two times:

  i++;
  i.ToString();

使用括号设置优先级(首先增加,然后转换为字符串)

(++i).ToString();

(i++).ToString();

因为当++用作后缀时,它会立即增加其值,然后使用ToString();

相反,如果你使用++作为前缀操作符,那么它会使用ToString()将现有值转换为字符串,然后它会尝试增加值,所以在这种情况下,你会在增加字符串值时得到错误…

所以尝试使用括号来增加其优先级,如(++i).ToString();