C#运算符和强制类型转换
1,运算符
算数运算符 + - * / %
逻辑运算符 & | ^ ~ && || !
字符串连接运算符 +
增量和减量运算符 << >>
比较运算符 == != <> <= >=
赋值运算符 = += -= *= /= %= &= |= ^= <<= >>=
成员访问运算符(用于对象和结构) .
索引运算符(用于数组和索引器) []
类型转换运算符()
条件运算符(三元运算符) ?:
委托链接和删除运算符+ -
对象创建运算符 new
类型信息运算符 sizeof is typeof as
溢出异常运算符 checked unchecked
间接寻址运算符 []
空间名称别名限定符 ::
空合并运算符 ??
2,运算符的简化操作
运算符的简化操作 等价于
x++,++x x=x++;
x--,--x x=x-1;
x+=y; x=x+y;
x-=y; x=x-y;
x*=y x=x*y;
x/=y; x=x/y;
x%=y; x=x%y;
x<<=y; x=x<<y;
x>>=y; x=x>>y;
x&=y; x=x&y;
x|=y; x=x|y;
3,条件运算符
条件运算符(?:)也称三元运算符,时if....else的简化形式。其名称的出处是它带有三个操作数。
4,checked和unchecked 运算符
byte=255;
b++;
Console.WriteLine(b.TosString());
byte数据类型只能包含0~255的数,所以递增b的值会导致溢出。CLR如何处理这个溢出取决于许多因素,所以只要有未意料的溢出风险,就要用某种方式确保的到我们想要的结果。
为此C#提供了checked和unchecked运算符。如果把一个代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就会抛出OverflowException。
byte b=255;
checked
{
b++;
}
Console.WriteLine(b.ToString());
5,is运算符
is运算符可以检查对象是否与特定的类型兼容。"兼容"表示对象或者是该类型,或者派生自该类型。例如,要检查变量是否与object类型兼容,可以使用下面的代码:
int i=10;
if(i is object)
{
Console.WriteLine("i is an object");
}
int 和所有C#数据类型一样,也从object继承而来;表达式i is object 将为true,并显示相应的消息。
6,as 运算符
as运算符用于引用类型显式类型转换。如果要转换的类型与指定类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null值。
7,sizeof运算符
使用sizeof运算符可以确定栈中值类型需要的长度(单位是字节)
Console.WriteLine(sizeof(int));
8,typeof运算符
typeof运算符返回一个特定类型的System.Type对象
9,可空类型和运算符
int? a=null;
int? b=a+4;//b=null
int? c=a*5;//c=null
10,合并运算符
如果第一个操作数不是null,则整个表达式就等于第一个操作数的值
如果第一个操作数是null,整个表达式就等译第二个操作数的值
int? a=null;
int b=10;
b=a??b;// b的是为10
a=3;
b=a??b;//b的值是3
11,运算符的优先级
初级运算符>一元运算符>乘除运算符>加减运算符>移位运算符>关系运算符>比较运算符>按位AND运算符>按位XOR运算符>按位OR运算符>布尔AND运算符符>布尔OR运算符>条件运算符>赋值运算符
运算符分类表省略。。。。。。
12,类型转换
隐式转换
byte a=10;
byte b=23;
long total;
total=a+b;
Console.WriteLine(total);
隐式类型转换只能从较小的整数类型转换为较大的整数类型。
显示转换
long val=30000000000;
int i=cheked((int)val);
13,装箱和拆箱
文章引用:http://www.qishunwang.net/knowledge_show_147.aspx