C# 换算增值

C# 换算增值,c#,C#,我试图将递增的值转换为字符串 i++.ToString() 上述声明运行良好 ++i.ToString() 这个显示错误行。为什么?因为在第二个表达式中,i的ToString()方法首先被调用,++运算符对字符串没有意义。另一方面,在第一个表达式中,整数i将递增1,并调用方法ToString()。因此,您可以得到数字的字符串表示形式。正如乌卢格贝克·乌米罗夫(ulugbek umirov)在评论中指出的那样,你可以改变这一点: (++i).ToString(); 请看一看。因为第二个意思是

我试图将递增的值转换为字符串

i++.ToString()
上述声明运行良好

++i.ToString()

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

因为在第二个表达式中,
i
ToString()
方法首先被调用,
++
运算符对字符串没有意义。另一方面,在第一个表达式中,整数
i
将递增1,并调用方法
ToString()
。因此,您可以得到数字的字符串表示形式。正如乌卢格贝克·乌米罗夫(ulugbek umirov)在评论中指出的那样,你可以改变这一点:

(++i).ToString();

请看一看。

因为第二个意思是:

++(i.ToString())  // Oops, compiler error
和字符串类型不能递增。

(++i)。ToString()
将完成此任务。

您必须选择

分两次完成:

  i++;
  i.ToString();
使用括号设置优先级(先增加优先级,然后转换为字符串)


该错误是由应用的运算符的优先级引起的。 在指令中,您试图对字符串应用int增量。 如果要发布增量,应执行以下操作:

(++i).ToString();

这是由于
i++
++i
的运算符顺序不同造成的

i++
属于“主”组,而
++i
属于“一元”组。但由于
也属于“主要”,因此具有较高的优先性。因此,首先执行
.ToString
。不能对字符串使用
++
运算符

您可以将其包装为:

(++i).ToString()

参考资料:

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


另请参见。

,因为当++用作后缀时,它会立即增加其值,然后使用ToString()将其转换为字符串

相反,如果您使用++作为前缀运算符,那么它将使用ToString()将现有值转换为字符串,然后它将尝试递增该值,因此在这种情况下,您在递增字符串值时会遇到错误


因此,尝试使用括号将其优先级增加为(++i).ToString()

那么如何转换它呢?@Jesuraja使用
(++i).ToString()
。你的意思是没有意义吗?虽然这对某些人来说是微不足道的,但我鼓励你在以后的问题中包括你遇到的确切错误细节。简单地说“这一个显示错误”会让事情变得不清楚。它以红色显示错误行……在这里,您可以看到
i++
++i
的运算符进位不同:第二个属于“一元”组,但
属于“主”组。因此,首先执行
.ToString
。可能有一条错误消息-当您提到错误时,您应该始终将其包含在问题中。(就像说“它抛出了一个异常”而没有告诉我们异常。)删除附加的
@Jesuraja Removed。谢谢,这是打字错误。感谢您的第一个答案:)
(++i).ToString();
(++i).ToString()