C# 運算子

C# 提供了許多的運算子 (也就是在運算式中用來指定要執行運算的符號)。 在整數型別上的運算,例如 ==、!=、<、>、<=、>=、binary +、binary -、^、&。 |~、 ++、 -- 及 sizeof() 通常都在列舉型別上被允許。 此外,許多運算子可由使用者多載來改變意義,以便套用到使用者定義型別上。

下表會依照優先順序的分組方式列出 C# 運算子, 每個群組內的運算子都有相同的優先順序。

運算子分類

運算子

主要

x.y

f(x)

a[x]

x++

x--

new

typeof

checked

unchecked

default(T)

delegate

->

一元

+

-

!

~

++x

--x

(T)x

true

false

&

sizeof

乘法類 (Multiplicative)

*

/

%

加法類 (Additive)

+

-

SHIFT

<<

>>

關係和型別測試

<

>

<=

>=

is

as

相等

==

!=

邏輯 AND

&

邏輯 XOR

^

邏輯 OR

|

條件式 AND

&&

條件式 OR

||

Null 聯合

??

條件式

?:

指派和 Lambda 運算式

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

=> Lambda 運算子

算術溢位

算術運算子 (+-*/) 會產生相關數字型別 (Numeric Type) 可能值範圍以外的結果。 您應參閱有關特定運算子的章節以取得詳細資料,但一般而言:

  • 整數算術溢位可能會擲回 OverflowException,或是捨棄結果的最大顯著性位元。 除數為零的整數除法一定會擲回 DivideByZeroException。

  • 浮點算術溢位或者是除數為零時,並不會產生例外狀況。因為浮點數型別是根據 IEEE 754 標準所制訂,所以已經提供無限大 (Infinity) 及非數值 (NaN,Not A Number) 狀況的表示方法。

  • 十進位算術溢位一定會擲回 OverflowException。 除數為零的十進位除法一定會擲回 DivideByZeroException

整數溢位發生時,會導致怎樣的情形要根據執行內容為 checked 或 unchecked 而定。 在 checked 的內容中會擲回 OverflowException。 在 unchecked 的內容中,結果的最大顯著位元會被捨棄,並繼續執行。 所以 C# 給予您處理溢位或忽略溢位的選擇。

除了算術運算子,整數類資料型別 (Integral Type) 間的轉換也可能造成溢位 (例如,將 long 轉換為 int),而且也與 checked 或 unchecked 執行有關。 然而,位元 (Bitwise) 運算子和移位 (Shift) 運算子一定不會造成溢位。

請參閱

參考

可多載的運算子 (C# 程式設計手冊)

C# 關鍵字

概念

C# 程式設計手冊

其他資源

C# 參考

Visual C#