为什么不能连锁经营者?
int test = 5;
test++++;
OR
int test = 5;
++test++;
此代码给出了编译时错误。
增量或减量运算符的操作数必须是变量,属性或索引器。
我完全理解这一点,如果允许,将是一个完整的代码味道,几乎没有真实世界的用法。我不完全理解为什么会导致错误。在每个陈述之后,我几乎都期望test
的值为7。
答案 0 :(得分:3)
++
运算符处理“左手值”,即可以分配的东西,因为它等同于:
test = test + 1;
另一方面,test++
是一个表达式,你不能给它分配东西,test ++ = 5不起作用。
这是(test++) ++
不起作用的原因。
答案 1 :(得分:3)
基本上,这是由于规范的第7.6.9节:
后缀增量或减量操作的操作数必须是分类为变量,属性访问或索引器访问的表达式。操作的结果是与操作数相同类型的值。
第二句意味着i++
被归类为值(不是变量,与i
不同),第一句话将其视为运算符的操作数
我怀疑它是为了简单而设计的,以避免您真正不想进入的奇怪情况 - 不仅仅是您给出的代码,还包括:
Foo(ref i++);
i++ = 10;
答案 2 :(得分:0)
++是一个特殊的运算符,它只是foo = foo + 1的简写。没有必要创建无限的重载列表,如+++,++++等。当你可以说foo = foo + 7时,这就是必须要做的事情。
所以基本上简短的回答是它不值得努力。没有它就没那么难,尤其是使用+ =运算符。而且它更具可读性。什么更容易阅读:
int test = 1;
test+++++;
或者....
int test = 1;
test += 5;
计算所有这些加号会很难读。 2清楚可见。更重要的是,你会在50-50抽奖活动中计算果冻豆。 : - )