c# 提供了許多運算子,這些運算子是指定要在表示式中執行哪些操作(數學、索引、函式呼叫等等)的符號。 可以過載許多應用於使用者定義型別的運算子,從而更改其含義。
對整數型別執行的運算(如==
、!=
、<
、>
、&
、|
)通常也可對列舉 (enum
) 型別執行。
以下章節按最高優先順序到最低優先順序的順序列示 c# 運算子。 各章節內運算子的優先順序相同。
以下是具有最高優先順序的運算子。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
x.y:成員訪問。
x?.y:null 條件成員訪問。 如果左運算元為null
,則返回null
。
x?[y]:null 條件索引訪問。 如果左運算元為null
,則返回null
。
f(x):函式呼叫。
a[x]:聚合物件索引。
x++:字尾遞增。 先返回 x 值,然後用加 1(通常加整數 1)後的 x 值更新儲存位置。
x--:字尾遞減。 先返回 x 值,然後用減 1(通常減整數 1)後的 x 值更新儲存位置。
new:型別例項化。
typeof:返回表示運算元的 system.type 物件。
checked:對整數運算啟用溢位檢查。
unchecked:對整數運算禁用溢位檢查。 這是預設的編譯器行為。
default(t):返回型別 t 的預設初始值,引用型別的預設初始值為null
,數值型別的預設初始值為 0,結構型別成員的預設初始填充值為 0/null
。
delegate:宣告並返回委託例項。
sizeof:返回型別運算元的大小(以位元組為單位)。
->:指標取消引用與成員訪問相結合。
這些運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
+x:返回 x 的值。
-x:數值取反。
!x:邏輯取反。
~x:按位求補。
++x:字首遞增。 先用加 1(通常加整數 1)後的 x 值更新儲存位置,然後返回 x 值。
--x:字首遞減。 先用減 1(通常減整數 1)後的 x 值更新儲存位置,然後返回 x 值。
(t)x:型別顯式轉換。
await:等待task
。
&x:位址。
*x:取消引用。
這些運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
x * y:乘法。
x / y:除法。 如果運算元均為整數,則結果為整數,捨去小數(例如,-7 / 2 is -3
)。
x % y:取模。 如果運算元均為整數,則返回 x 除以 y 後的餘數。 如果q = x / y
且r = x % y
,則x = q * y + r
。
這些運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
x + y:加法。
x:y:減法。
這些運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
x << y:左移位,右側用 0 填充。
x >> y:右移位。 如果左運算元是int
或long
,則左位數補符號位。 如果左運算元是uint
或ulong
,則左位數補零。
這些運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
x < y:小於(如果 x 小於 y,則為 true)。
x > y:大於(如果 x 大於 y,則為 true)。
x <= y:小於或等於。
x >= y:大於或等於。
is:型別相容性。 如果求值後的左運算元可以轉換為右運算元中指定的型別(靜態型別),則返回 true。
as:型別轉換。 返回左運算元並轉換為右運算元中指定的型別(靜態型別),但as
返回null
,其中(t)x
會引發異常。
這些運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
x == y:相等。 預設情況下,對於string
以外的引用型別,此運算子返回引用相等(標識測試)。 但是,型別可以過載==
,因此,如果你想測試標識,最好對object
使用referenceequals
方法。
x != y:不相等。 請參閱有關==
的注釋。 如果某個型別過載==
,則它必須過載!=
。
此運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊該運算子轉到包含示例的詳細頁面。
x & y:邏輯或位 and。 與整數型別一起使用,並且通常允許enum
型別。
此運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊該運算子轉到包含示例的詳細頁面。
x ^ y:邏輯或位 xor。 通常可以將此運算子與整數型別和enum
型別一起使用。
此運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊該運算子轉到包含示例的詳細頁面。
x | y:邏輯或位 or。 與整數型別一起使用,並且通常允許enum
型別。
此運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊該運算子轉到包含示例的詳細頁面。
x && y:邏輯 and。 如果第乙個運算元為 false,則 c# 不對第二個運算元求值。
此運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊該運算子轉到包含示例的詳細頁面。
x || y:邏輯 or。 如果第乙個運算元為 true,則 c# 不對第二個運算元求值。
此運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊該運算子轉到包含示例的詳細頁面。
x ?? y:如果不為null
,則返回x
;否則返回y
。
此運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊該運算子轉到包含示例的詳細頁面。
t ? x : y:如果測試t
為 true,則計算並返回x
;否則,計算並返回y
。
這些運算子的優先順序比下一章節高,比上一章節低。 請注意,你可以單擊運算子轉到包含示例的詳細頁面。
x = y:賦值。
x += y:遞增。x
值加y
值,結果儲存在x
中,並返回新值。 如果x
指定event
,則y
必須是 c# 作為事件處理程式新增的相應函式。
x -= y:遞減。x
值減y
值,結果儲存在x
中,並返回新值。 如果x
指定event
,則y
必須是 c# 作為事件處理程式刪除的相應函式
x *= y:乘法賦值。x
值乘以y
值,結果儲存在x
中,並返回新值。
x /= y:除法賦值。x
值除以y
值,結果儲存在x
中,並返回新值。
x %= y:取模賦值。x
值除以y
值,餘數儲存在x
中,並返回新值。
x &= y:and 賦值。y
值和x
值相與,結果儲存在x
中,並返回新值。
x |= y:or 賦值。y
值和x
值相或,結果儲存在x
中,並返回新值。
x ^= y:xor 賦值。y
值和x
值相異或,結果儲存在x
中,並返回新值。
x <<= y:左移賦值。 將x
值向左移動y
位,結果儲存在x
中,並返回新值。
x >>= y:右移賦值。 將x
值向右移動y
位,結果儲存在x
中,並返回新值。
=>:lambda 宣告。
算術運算子(+、-、*、/)的計算結果可能會超出所涉數值型別的可取值範圍。 詳細資訊應參考特定運算子的相關章節,而一般情況下:
C語言基礎學習運算子 關係運算子
比較大小 首先,我們得先了解一下布林型別。c語言的c99標準支援布林型別,關鍵字為 bool,用於表示邏輯值true與false。c語言用值1表示true,用值0表示false。因此布林型別實際上是一種整數型別。程式常常使用含有關係運算子的表示式進行分支和迴圈操作。我們將在分支和迴圈的章節中具體學習...
繼續學習C 運算子
兩整數相除,結果為整數,有一方是實數形式,結果保留小數 求餘運算子要求兩側均為整型資料,數值取餘,符號與被除數一致 恩,問這個問題的人太多了,懶得繼續回答,直接貼上來自己看。優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成...
C 學習 運算子過載
同函式過載一樣,算數操作符過載能夠帶給我們操作不同資料型別的方法,包括你自己定義的類。我們日常最常用的就是加 減 乘 除,而它們的性質又有些相似。所以,它們的運算子實現方式也有些相似。共有三種實現方式 首先,我們介紹怎樣使用友鄰函式定義操作符過載。看下面的 include class cents 使...