转换增量值
本文关键字:转换 | 更新日期: 2023-09-27 18:08:12
尝试将增量值转换为字符串。
i++.ToString()
以上语句运行良好。
++i.ToString()
这个显示错误行。为什么?
因为在第二个表达式中首先调用i
的ToString()
方法,并且++
运算符对字符串没有意义。另一方面,在第一个表达式中,将整数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();