C#自动增量运算符错误:操作数在语法上是不正确的?

Héc*_*rez 3 c# operators

我正在查看文档,并试图了解操作符的实际工作方式.

增量运算符(++)将其操作数增加1.增量运算符可以出现在其操作数之前或之后:++variablevariable++.

第一种形式是前缀增量操作.操作的结果是操作数增加后的值.

第二种形式是后缀增量操作.操作的结果是操作数增加之前的值.

我希望以下操作返回3,但它不编译,并声明运算符必须是变量,属性或索引器:

int x = 0;
Console.WriteLine(x++ ++ ++);
/*Expected output: 3*/
Run Code Online (Sandbox Code Playgroud)

为什么这是错的?我应该假设x++不为下一个++运算符返回相同类型的值吗?

mil*_*bug 7

草案C#6语言规范:

后缀增量或减量操作的操作数必须是分类为变量,属性访问或索引器访问的表达式.操作的结果是与操作数相同类型的值.

x是一个变量,但x++不是"变量,属性访问或索引器访问".

现在,让我们想象一个这样的后缀增量运算符调用合法的世界.给定一个int x = 42;,x++增量x为43,但它的计算结果为42.如果x++ ++是合法的,它将适用于x++,这不是你想要的(它会增加临时值,而不是x)