运算符
来源:互联网 发布:斯太尔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
- 运算和运算符
- 运算符
- ??运算符
- 运算符
- << 运算符
- 运算符
- 运算符
- 运算符
- 运算符
- 运算符
- 运算符
- 运算符
- ?? 运算符
- 运算符
- 运算符
- 运算符
- 运算符
- 运算符
- TCP UDP、Socket
- ipv6审核被拒绝的解决方案
- netfilter——独孤九剑
- 数据结构与算法--队列
- 第4.1.3章 WEB系统最佳实践页面实例 表格编辑
- 运算符
- angular form表单错误提示并自动focus第一个input
- log4j myBatis 的sql输出配置
- 数据库性能优化之索引
- 为什么要从事BPM开发
- 拦截器,过滤器
- 【JAVA】JAVA 第16周练习题
- js学习笔记-变量作用域
- Qt5.6连接MySQL5.7出错