C# 提供大量運算符,這些運算符是指定在表達式中執行哪些操作的符號。通常允許對枚舉進行整型運算,例如 ==、!=、<、>、<=、>=、binary +、binary -、^、&、|、~、++、--sizeof()。此外,很多運算符可被用戶重載,由此在應用到用戶定義的類型時更改這些運算符的含義。 和
下表列出了按優先級順序分組的 C# 運算符。每個組中的運算符具有相同的優先級。
運算符類別 | 運算符 |
---|---|
基本 |
|
一元 |
|
乘法 |
|
加法 |
|
變換 |
|
關係和類型檢測 |
|
相等 |
|
邏輯“與” |
|
邏輯 XOR |
|
邏輯“或” |
|
條件 AND |
|
條件 OR |
|
條件運算 |
|
賦值 |
算術運算符(+、-、*、/)產生的結果可能會超出涉及的數值類型可能值的範圍。詳細信息應參考有關特定運算符的章節,而一般情況下:
-
整數算術溢出或者引發 OverflowException,或者丟棄結果的最高有效位。整數被零除總是引發 DivideByZeroException。
-
浮點算術溢出或被零除從不引發異常,因爲浮點類型基於 IEEE 754,因此可以表示無窮和 NaN(不是數字)。
-
小數算術溢出總是引發 OverflowException。小數被零除總是引發 DivideByZeroException。
當發生整數溢出時,產生的結果取決於執行上下文,該上下文可爲 checked 或 unchecked。在 checked 上下文中引發 OverflowException。在未選中的上下文中,放棄結果的最高有效位並繼續執行。因此,C# 使您有機會選擇處理或忽略溢出。
除算術運算符以外,整型之間的強制轉換也會導致溢出(例如,將 long 強制轉換爲 int)並受 checked 或 unchecked 執行的限制。然而,按位運算符和移位運算符永遠不會導致溢出。