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

本文关键字:后缀 非法 前缀 为什么 | 更新日期: 2023-09-27 18:33:25

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

using System;
class Program
{
    static void Main(string[] args) {
        int i = 0;
        --i++;
        Console.WriteLine(i);
    }
}

它在--i++上给了我以下错误:

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

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

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

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

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

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

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

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

-- 运算符和 ++ 运算符不仅返回值,还更改它们操作的变量。无论您尝试计算--i++哪个顺序,第一个运算符都会返回一个值,第二个运算符将无法将其返回值赋回该