算術運算符的運算數都是數值型的,即下述a和b是表達式。
| 表達式 |
讀法 |
元數 |
解釋
|
a + b |
a plus b |
binary |
加法
|
a - b |
a minus b |
binary |
減法
|
a*b |
a times b |
binary |
乘法
|
a/b |
a divided by b |
binary |
除法。如果2個操作數都是整數,商也是整數。
|
a%b |
a mod b |
binary |
要求操作數都是整數,返回餘數。
|
a++ |
a plus plus or Postincrement a |
unary |
操作數必須是左值,返回加一之前的值。
|
++a |
plus plus a or Preincrement a |
unary |
操作數必須是左值,返回加一之後的值。
|
a-- |
a minus minus or Postdecrement a |
unary |
操作數必須是左值,返回減一之前的值。
|
--a |
minus minus a or Predecrement a |
unary |
操作數必須是左值,返回減一之後的值。
|
邏輯運算符的運算數是布爾值或整數值。
| 表達式 |
讀法 |
元數 |
解釋
|
a&b |
a bitwise and b |
binary |
對兩個操作數均求值,如果是整型則按位與,如果是布爾型則邏輯與。
|
a&&b |
a and b |
binary |
只用於布爾值表達式。短路求值做邏輯與。
|
a | b |
a bitwise or b |
binary |
對兩個操作數均求值,如果是整型則按位或,如果是布爾型則邏輯或。
|
a || b |
a or b |
binary |
只用於布爾值表達式。短路求值做邏輯或。
|
a ^ b |
a x-or b |
binary |
如果是整型則按位異或,如果是布爾型則邏輯異或。
|
!a |
not a |
unary |
只用於布爾值表達式。邏輯非
|
~a |
bitwise not a |
unary |
只用於整型值表達式。按位非
|
| 表達式 |
讀法 |
元數 |
解釋
|
a << b |
a left shift b |
binary |
左移位
|
a >> b |
a right shift b |
binary |
右移位
|
| 表達式 |
讀法 |
元數 |
解釋
|
a == b |
a is equal to b |
binary |
對於值類型或字符串類型,比較值是否相等。對於引用類型,比較是否為同一對象。
|
a != b |
a is not equal to b |
binary |
返回運算符==的邏輯非。
|
a < b |
a is less than b |
binary |
只用於數值表達式。小於。
|
a > b |
a is greater than b |
binary |
只用於數值表達式。大於。
|
a <= b |
a is less than or equal to b |
binary |
只用於數值表達式。小於等於。
|
a >= b |
a is greater than or equal to b |
binary |
只用於數值表達式。大於等於。
|
| 表達式 |
讀法 |
元數 |
解釋
|
a = b |
a equals (or set to) b |
binary |
對於值類型,修改左值的基本值;對於引用類型,左值指向新的引用對象。
|
a = b = c |
b set to c, and then a set to b |
n-ary |
連續賦值。等價於a = (b = c)
|
| 表達式 |
讀法 |
元數 |
解釋
|
a += b |
a plus equals (or increment by) b |
binary |
等價於a = a + b.
|
a -= b |
a minus equals (or decrement by) b |
binary |
等價於a = a - b.
|
a *= b |
a multiply equals (or multiplied by) b |
binary |
等價於a = a*b.
|
a /= b |
a divide equals (or divided by) b |
binary |
等價於a = a/b.
|
a %= b |
a mod equals b |
binary |
等價於a = a%b.
|
a &= b |
a and equals b |
binary |
等價於a = a&b.
|
a |= b |
a or equals b |
binary |
等價於a = a|b.
|
a ^= b |
a xor equals b |
binary |
等價於a = a^b.
|
a <<= b |
a left-shift equals b |
binary |
等價於a = a << b.
|
a >>= b |
a right-shift equals b |
binary |
E等價於a = a >> b.
|
| 表達式 |
讀法 |
元數 |
解釋
|
x is T |
is x of type T |
binary |
is運算符會忽略在要檢查的實例的類上定義的任何運算符重載。當使用==運算符時,該運算符可能會被重載。
|
x as T |
cast x to T |
binary |
等價於x is T ? (T)x : null
|
sizeof(x) |
size of x |
unary |
只能用於值類型
|
typeof(T) |
type of T |
unary |
返回System.Type對象。操作數必須是類型。對象應該用GetType方法
|
| 表達式 |
讀法 |
元數 |
解釋
|
*a |
object at a |
unary |
間址運算符
|
a->member |
member member of a |
binary |
類似於.運算符。
|
a[b] |
object at offset b from a |
binary |
索引一個指針
|
&a |
reference to a |
unary |
取地址
|
stackalloc a |
allocate a on the stack |
binary |
棧內存分配
|
fixed a |
prevent a from being relocated |
binary |
|
| 表達式 |
讀法 |
元數 |
解釋
|
checked(a) |
evaluate a and check for overflow |
unary |
對值a溢出檢查
|
unchecked(a) |
evaluate a without checking for overflow |
unary |
對值a避免溢出檢查
|
| 表達式 |
讀法 |
元數 |
解釋
|
a.b |
member b of a |
binary |
訪問類型或命名空間a的成員b。如b是字段,則調用該字段的get函數
|
a[b] |
item b in a |
binary |
返回a的索引b的項目的值。數組是基於0索引
|
a[^b] |
item b from the end in a |
binary |
返回a從尾部計數的索引b的項目的值。C# 8.0的特性。^e是System.Index類型。
|
a[b..c] |
|
binary |
返回a的索引在[b,c)的項目值列表。C# 8.0的特性。表達式a..b是System.Range類型
|
(a)b |
cast b to type a |
binary |
把b的值顯式轉換為類型a。b的類型必須有類型轉換函數直接到a或者到另一個類型並有轉換函數到a.
|
new a |
create a new a |
n-ary |
創建一個a類型的對象並調用缺省構造函數。a類型的構造函數也可以帶實參:new a(type1 arg1, type2 arg2, ...)
|
a + b |
concatenate string b to the end of string a |
binary |
如果a和b是字符串,則連接它們。如果任何一個操作數是null, 則被空字符串("")替代。如果一個操作數是字符串另一個是非字符串的object, 則連接前調用ToString()
|
a + b |
concatenate delegate b to delegate a |
binary |
如果a和b是委託,執行委託的連接。
|
a ? b : c |
if a then b else c |
ternary |
如果a是真,則對b求值並返回其值,否則對c求值並返回其值。任何情況b和c只有一個求值.
|
a ?? b |
if a is null then b else a |
binary |
如果a是null, 對b求值並返回其值,否則對a求值並返回其值。如果a非null, b不會被求值.
|
a?.b |
if a is not null then evaluate b |
binary |
在試圖引用對象的成員之前,先判斷對象是否為null。可連續使用null判斷,如:a?.b()??c或a?.b()?[c]
|
a?[b] |
if a is not null then get b |
binary |
在試圖引用數組的元素之前,先判斷對象是否為null。可連續使用null判斷,如:a?[b]??c)或a?.b()?[c]
|
@"a" |
verbatim "a" |
nullary |
字符串忽略轉義字符序列。
|
$"{b}" |
insert b into the string literal |
n-ary |
$開始一個字符串插值語句。包含在{}的符號名字將被求出其字符串值,必要時調用ToString()
|
$@"{b}" |
insert b into the verbatim string literal |
n-ary |
組合@和$. 使用單層花括號{ and }。從C# 8開始,運算符可以是任意序。
|