运算符

来源:互联网 发布:斯太尔wt数据俯仰角 编辑:程序博客网 时间:2024/05/20 17:06

C#存在许多运算符:
这里写图片描述
1.条件运算符(?:)
也叫做三元运算符,是if…else结构的简化形式。其名称的出处是它带有3个操作数。首先判断一个条件,如果是true则返回一个值,为false返回另一个值。语法如下
condition ? true_value : false_value;
其中condition是要判断的布尔表达式,true_value是condition为true时返回的值,false_value是condition为false时返回的值。

2.checked和unchecked运算符
考虑下面的代码:

  byte b=255;  b++;  Console.writeLine(b,ToString());

这会导致溢出,C#提供了checked和unchecked运算符。如果一个代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就抛出OverflowException异常。下面修改代码,使之包含checked运算符:

byte b=255;checked{    b++;}Console.writeLine(b,ToString());

运行这段代码,就会得到溢出的错误信息。如果改为unchecked就不会抛出异常。默认为unchecked。

3.is运算符
is运算符可以检查对象是否与特定的类型兼容。“兼容”表示对象或者改类型,或者派生类型。例如,要检查变量是否与object类型兼容,可以使用下面的代码;

int i=10;if(i is object){    Console.WrileLine(" i is an object");}

为true以为int和所有C#数据类型一样,从object继承而来。

4.as运算符
as运算符用于执行引用类型的显式类型转换。如果要转换的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null值。如下面的代码。如果object引用实际上不引用string实例,把object引用转换为string就会返回null;

object o1="Some String";object o2=5;string s1=o1 as string;//s1="Some String"string s2=o2 as string;//s2=null

as运算符允许在一步中进行安全的类型转换,不需要先使用is运算符测试类型,再执行转换。

5.sizeof运算符
使用sizeof运算符可以确定栈中值类型需要的长度(单位字节):

Console.WriteLine(sizeof(int));

如果对于复杂类型(和非基元类型)使用sizeof运算符,就需要把代码放在unsafe块中,如下所示:

unsafe{    Console.WriteLine(sizeof(Customer));}

6.typeof运算符
返回一个表示特定类型的System.Type对象。;例如,typeof(string)返回表示System。String类型的Type对象。在使用反射技术动态的查找对象的相关信息时,这个运算符很有用。

7.可空类型和运算符
待续

8.空合并运算符(??)
可以处理可空类型和引用类型时表示null可能的值。这个运算符放在两个操作数之间,第一个操作数必须是一个可空类型或引用类型;第二个操作数必须与第一个操作数的类型相同,或者可以隐含的转换为第一个操作数的类型。空合并运算符的计算如下:如果第一个操作数不是null,整个表达式就等于第一个操作数的值。
如果第一个操作数是null,整个表达式就等于第二个操作数的值。
例如

int? a=null;int b;b=a??10;//b=10a=3;b=a?10;//b=3
0 0
原创粉丝点击