1.checked和unchecked
static void Main()
{
int x = 2147483647; // Max int
int y = 2;
int z;
checked
{
z = x * y;
}
Console.WriteLine("Unchecked output value: {0}", z);
Console.Read();
}
上面的代码会抛出一个OverflowException异常。
如果不写checked 则会输出溢出之后的错误答案,而不是抛出异常。
用unchecked 跟不写是一样的结果。
2.is运行符
int i = 10;
if (i is object) //True
{
Console.WriteLine("i is an object");
}
3.as运算符
object o1 = "Some String";
object o2 = 5;
string s1 = o1 as string; //s1 = "Some String"
string s2 = o2 as string; //s1 = null
4.可空类型
int? a = null;
int? c = null;
int? b = 2;
int? b = a + 4; // b = null
int? c = a * 5; // c = null
Console.WriteLine(a==c); //True;
Console.WriteLine(a>b); //False
Console.WriteLine(a<b); //False
Console.WriteLine(a==b); //False
//同样的double等值类型也可以这样
5.空接合运算符
int? a = null;
int b;
b = a ?? 10; // b has the value 10
a = 3;
b = a ?? 10; // b has the value 3
//运算符?? 前面的一个必须是可空类型的
//如果第一个不是null的话那么表达式的值就是第一个数
//否则表达式的值就是第二个值