当你使用int.Parse(“1”)作为后缀增量++运算符的操作数时:
var result = int.Parse("1")++;
C#编译器显示错误:
增量或减量运算符的操作数必须是变量,属性或索引器。
我可以理解前缀输入或减量运算符,但不能用于后缀输入或减量运算符。 对于带前缀的运算符,没有值执行操作,但在后缀的情况下总会有一个值。与属性相同,属于幕后的“getter”,因此以相同的方式返回值(假设,未在IL中检查)。
我在这里缺少什么?
答案 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;