为什么同时使用前缀和后缀都是非法的?

Pok*_*u22 2 c# language-lawyer prefix-operator postfix-operator

为什么下面的代码是非法的?

using System;

class Program
{
    static void Main(string[] args) {
        int i = 0;
        --i++;
        Console.WriteLine(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误--i++:

The operand of an increment or decrement operator must be a variable, property or indexer

我知道这段代码没有实际用途; 我只是好奇为什么不允许这样做.我不关心它可以通过删除该行而没有其他影响来修复.由于这是用标记的,请包括语言规范中的证据.

Mau*_*res 13

--返回一个值,而不是一个变量,但操作符++期望它是一个变量,这就是它不起作用的原因.


Cod*_*ter 7

从C#规范"7.6.9后缀增量和减量运算符":

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

我认为这回答了你的问题.

这也是你不能做到的原因,也是i++++括号的原因:也(i++)++给出了相同的编译错误.