可能重复:
C# 中的前后递增/递减运算符
考虑以下简单的片段:
int x = 0;
int y = ++x + 1; // forks fine, gives y 2 (no doubt :) )
int x = 0;
int y = ++x++; // Error: The operand of an increment or decrement operator must be a variable, property or indexer.
很明显,在同一个语句中混合前/后增量或减量对于编译器来说不是一个理想的特性。
但
- 不,事实上,
++x++
一样++x + 1
吗?即使考虑到 Eric Lippert在这里发现的所有微妙之处。它们都是关于行为而不是与操作数的关系,以及 CSC 输出的消息。 - 是不是,事实上,
x
是一个变量?就像,++x + 1
构建得很好,操作数是相同的x
。并且它类似地在预增量运算符 ++ 上运行。所以这仍然是一个有用的限制,它的编译器错误似乎有点奇怪。输出诸如“不能同时应用前置增量和后置增量操作符”不是更有意义吗? - 你们知道这个限制的任何隐藏的编译器视角原因,而不是代码可用性的原因吗?