Category | Operator |
算术 | + - * / % |
逻辑 | & | ^ ~ && || ! |
字符串连接 | + |
自加, 自减 | ++ -- |
移位 | << >> |
比较 | == != < ><= >= |
赋值 | = += -= *= /= %= &= |= ^= <<= >>= |
取指 | [] |
类型 | sizeof is typeof as |
溢出异常 | checked unchecked |
Null coalescing operator | ?? |
is
检查当前的对象是否兼容要检查的类型,即是否是这个类型或是否继承自这个类型
int i = 10;
if (i is object)
{
Console.WriteLine(“i is an object”);
}
as
显式类型转化,如果类型不兼容,将返回null
object o1 = “Some String”;
object o2 = 5;
string s1 = o1 as string; // s1 = “Some String”
string s2 = o2 as string; // s2 = null
typeof
返回System.Type类型
Nullable Types and Operators
?
在C#里一个值类型的变量不可能是Null的,他包含了一个值类型的类型本身。这就是为什么我们管值类型叫做值类型。
但是很多情况下会有问题。可以定义一个列的数据类型是32bit的整型数而对应FCL中的Int32类型。但是,这一列在数
据库中暗示着可能为空,就意味着这一列的数据为空是可以接受的。但是使用.NET Framework 来操作数据库中的数据
是很困难的因为CLR不允许int32 的值为空的这一种表现形式。
为了改进这个形式,微软增加了一个Nullable类型的变量在CLR中。
Int32? a = 5;
Int32? b = null;
Int32? c = (Int32)a;
Double? d = 5;
Double? e = b;
a++;//a = 6
b = -b;//b = null
a = a + 3; // a = 9
b = b * 3; // b = null;
对于(+ ++ = == ! ~) 一元的 如果开始null,结果还是null
(+ ++ = == ! ~) 一元的 如果开始null,结果还是null
(+ - * / % & | ^ << >>) 二元的,一个是null,另一个也是null
( == !=). =运算符,如果操作数都是null的话,那么他们相等。如果一个是null,那么不想等。如果都不是null,那么比较数值大小再返回是否相等。
(< > <= >=)比较运算符,如果一个是null,返回false。如果都不是null,那么比较数值大小。再返回。
??
需要两个操作数。如果左面的操作数不为null,那么返回左面的操作数。如果左边的操作符为空的话,那么返回右边的操作符.
??操作很方便,可以用来设置变量的初始值。
Int32? b = null;
Int32? x = b ?? 123;