算术运算符
+ - * / %
逻辑运算符
& | ^ ~ && || !
字符串连接运算符
+
增量和减量运算符
++ --
移位运算符
<< >>
比较运算符
== != < > <= >=
赋值运算符
= += -= *= /= %= &= |= ^= <<= >>=
成员访问运算符(用于对象和结构)
.
索引运算符(用于数组和索引器)
[]
类型转换运算符
()
条件运算符(三元运算符)
?:
委托连接和删除运算符
+ -
对象创建运算符
new
类型信息运算符
sizeof is typeof as
溢出异常控制运算符
checked unchecked
间接寻址运算符
[]
名称空间别名限定符
::
空合并运算符
??
1、运算符的简化操作
x+=y等同于x=x+y,赋值运算符中(+= -= *= /= %= &= |= ^= <<= >>=)都是相同的模式。
当x++和++x单独一行时等同于x=x+1。当他们用于较长的表达式内部时,运算符放在前面(++x)会在计算表达式之前增加x。
int x = 0,y=0; x++; ++y; if (x==y) { Console.WriteLine("单独一行++在前在后结果一样"); } if (++x==2) { Console.WriteLine("++在前提前计算"); } if (y++==2) { Console.WriteLine("++在后没有提前计算"); }
运行以上代码,结果如下:
(1)条件运算符
条件运算符(?:)也称单元运算符,是if...else的简化形式。它判断一个条件真假来返回对应的值(为真返回:之前的值,为假返回:之后的值)。
int x = 0; string str = x == 0 ? "x等于0" : "x不等于0"; Console.WriteLine(str);
运行以上代码,结果如下:
恰当的使用三元运算符,可以使程序非常简洁。
(2)checked运算符和unchecked运算符
C#提供checked运算符和unchecked运算符,来对一个代码块进行标记,是否执行溢出检查。
byte x = 255; x++; Console.WriteLine(x);
运行以上代码,结果如下:
这是因为,,C#默认使用unchecked运算符不对溢出执行检查,这会导致数据丢失(byte不能超过255,溢出的位会丢失,所以结果为0)。
如果要防止溢出导致的数据丢失,可以使用checked运算符对代码块进行标记。
byte x = 255; checked { x++; } Console.WriteLine(x);
运行以上代码,结果如下:
程序会抛出异常,这个时候我们就能捕捉异常,来防止溢出丢失数据。
(3)is运算符
Is运算符检查对象是否与特定类型兼容(是该类型或者派生自该类型)。