2014-12-05 34 views
1

爲什麼以下代碼是非法的?爲什麼同時使用prefix和postfix是非法的?

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

我知道這個代碼有沒有實際用途;我只是好奇它爲什麼不被允許。我不在乎它可以通過刪除該行沒有其他影響來解決。由於這是用標記的,請包括語言規範的證據。

回答

7

從C#規範「7.6.9後綴增量和減量運算符」:

後綴增量或減量操作的操作數必須是屬於變量,屬性訪問,或表達索引器訪問。該操作的結果是與操作數相同類型的值

我認爲這會回答你的問題。

這也是你不能這樣做的原因i++++,也沒有括號:(i++)++也給出了相同的編譯錯誤。

13

--返回一個值,而不是一個變量,但在++運營商希望它是一個變量,這就是爲什麼它不工作。

3

--++運營商不只是返回值,他們改變變量他們進行操作。無論您嘗試評估哪個訂單--i++,第一個操作員將返回,第二個操作員將無法將其返回值分配回。

相關問題