C# 包含一元運算符、二元運算符和一個三元運算符。下表概述了這些運算符,并將它們按優先級以從高到低的順序列出:
章節 | 類別 | 運算符 |
---|---|---|
第 7.5 節 | 基本 | x.y f(x) a[x] x++ x-- newtypeof checked unchecked |
第 7.6 節 | 一元 | + - ! ~ ++x --x (T)x |
第 7.7 節 | 乘法 | * / % |
第 7.7 節 | 加法 | + - |
第 7.8 節 | 移位 | << >> |
第 7.9 節 | 關系和類型檢測 | < > <= >= is as |
第 7.9 節 | 相等 | == != |
第 7.10 節 | 邏輯 AND | & |
第 7.10 節 | 邏輯 XOR | ^ |
第 7.10 節 | 邏輯 OR | | |
第 7.11 節 | 條件 AND | && |
第 7.11 節 | 條件 OR | || |
第 7.12 節 | 條件 | ?: |
第 7.13 節 | 賦值 | = *= /= %= += -= <<= >>= &= ^= |= |
當表達式包含多個運算符時,運算符的優先級控制各運算符的計算順序。例如,表達式 x + y * z
按 x + (y * z)
計算,因為 *
運算符具有的優先級比 +
運算符高。
當操作數出現在具有相同優先級的兩個運算符之間時,運算符的順序關聯性控制運算的執行順序:
x + y + z
按 (x + y) + z
計算。?:
) 向右順序關聯,意思是從右向左執行運算。例如,x = y = z
按 x = (y = z)
計算。優先級和順序關聯性都可以用括號控制。例如,x + y * z
先將 y
乘以 z
然后將結果與 x
相加,而 (x + y) * z
先將 x
與 y
相加,然后再將結果乘以 z
。