为什么在int.parse(“1”)之后不允许使用后缀增量(++)运算符?

时间:2014-02-18 11:04:37

标签: c# .net

当你使用int.Parse(“1”)作为后缀增量++运算符的操作数时:

var result = int.Parse("1")++;

C#编译器显示错误:

  

增量或减量运算符的操作数必须是变量,属性或索引器。

我可以理解前缀输入或减量运算符,但不能用于后缀输入或减量运算符。 对于带前缀的运算符,没有值执行操作,但在后缀的情况下总会有一个值。与属性相同,属于幕后的“getter”,因此以相同的方式返回值(假设,未在IL中检查)。

我在这里缺少什么?

4 个答案:

答案 0 :(得分:12)

这对你有意义吗?因为它完全是一样的。

var result = (int.Parse("1") = int.Parse("1")+1);

您确定可以分配方法吗?

答案 1 :(得分:1)

显示错误,因为++添加了值并将该增量设置回变量或属性或索引器。

在您的情况下,框架将为结果分配什么?它不能因为只是一个内存操作而且值不能保持不变。

所以你必须int.Parse("1") + 1

答案 2 :(得分:1)

技术答案是自动递增和自动递减运算符仅适用于“左值”的表达式;即 在作业左侧合法的表达。

(AFAIK,这适用于支持自动递增和自动递减的所有语言......)

答案 3 :(得分:0)

错误说明全部:“增量或减量运算符的操作数必须是变量,属性或索引器”

您正在尝试增加表达式。

var result = int.Parse("1");
resunt += 1;