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()