c#各种运算符
来源:互联网 发布:macbook pro软件 编辑:程序博客网 时间:2024/05/17 16:46
c#主要支持下面所示的运算符:
算术运算符 + - * / %逻辑运算符 & | ^ ~ && || !字符串连接运算符 +增量和减量运算符 ++ --移位运算符 << >>比较运算符 == != < > <= >=赋值运算符 = += -= *= /= %= |= ^= <<= >>=成员访问运算符(用于对象和结构) .索引运算符(用于数组和索引器) []数据类型转换运算符 ()条件运算符(三元运算符) ?:委托连接和删除运算符 + -对象创建运算符 new类型信息运算符 sizeof(只用于不安全的代码) is as typeof 溢出异常控制运算符 checked unchecked间接寻址运算符 * -> &(只用于不安全的代码) []命名空间别名限定符 ::空接合运算符 ??
比较不常用却又很重要的运算符:
1、is运算符和as运算符
is运算符可以检查对象是否与特定的类型兼容。比如下例中要检查变量是否与object类型兼容:
if(i is object)
{
Console.WriteLine("i is an object.");
}
as运算符用于执行引用类型的显式类型转换。如果要转换的类型和指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回值null。举例如下:
object obj2=5;
string str1= obj1 as string;// str1="a string";
string str2= obj2 as string;//str2=null;
注:as运算符允许在一步中进行安全的类型转换,不需要先使用is运算符测试类型,再执行转换。
2、checked和unchecked运算符
有如下的代码:
b++;
Console.WriteLine(b.ToString());
byte数据类型只能包含0~255的数,所以b值的增量会溢出。CLR如何处理溢出?C#提供了checked和unchecked运算符。如果把一块代码段标志为checked,CLR就会执行溢出检查,如果发生异常,就抛出异常。
checked
{
b++; //抛出OverflowException
}
Console.WriteLine(b.ToString());
如果要禁止溢出检查,可以把代码标记为unchecked:
unchecked
{
b++;
}
Console.WriteLine(b.ToString());
在上述代码中,不会抛出异常,但会丢失数据,因为byte数据类型不能包含256位,溢出的位会丢失,b变量得到的值是0.
注:unchecked是默认值。只有在需要把几个未检查的代码行放在一个明确标记为checked的大代码块中,才需要显式使用unchecked关键字。
3、sizeof运算符
学过c的都知道,sizeof可以用来确定堆栈中值类型需要的长度(单位是字节):
{
Console.WriteLine(sizeof(int));//结果为4,因为int有四个字节,32位
}
4、可空类型和运算符
如果在程序中使用可空类型,就必须考虑null值在与各种运算符一起使用时的影响。通常可空类型与一元或二元运算符一起使用时,如果其中一个操作数或两个操作数都是null,其结果就是null。
int?b = a+4; //b=null;
int?c = a*2; //c=null;
注意,在比较可空类型时,只有有一个操作数是null,比较的结果就是false。即不能认为因为一个条件是false,那么它的对立面就是true。
int?b=10;
if(a>=b) //空值a显然不能和b比较
Console.WriteLine("a>=b");
else
Console.WriteLine("a<b");
5、空接合运算符(??)
空接合运算符为处理可空类型和引用类型时表示Null值的可能性提供了一种快捷方式。这个运算符放在两个操作数之间,第一个操作数必须是一个可空类型或引用类型,第二个操作数必须与第一个操作数的类型不同,或者可以隐含地转换为第一个操作数的类型。空接合运算符的计算如下:如果第一个操作数不是null,则整个表达式就等于第一个操作数的值。但如果第一个操作数是null,则整个表达式就等于第二个操作数的值。例如:
int b;
b=a??10; // b的值为10;
a=15;
b=a??10;// b的值为15;
注意:如果第二个操作数不能隐含地转换为第一个操作数的类型,就生成一个编译错误。
http://shop107954774.taobao.com/shop/view_shop.htm?user_number_id=1919696027&ali_trackid=2:mm_55853088_6374241_21856932:1398386295_6k3_130039509&qq-pf-to=pcqq.group淘宝店子,Bizen淘宝旗舰店,专卖男女士皮具。
- c#各种运算符
- 黑马程序员C#基础--字符串转译、各种运算符
- C#运算符大全_各种运算符号的概述及作用
- 各种位运算符
- 各种运算符注意事项
- 各种运算符
- java中各种运算符
- c++重载各种运算符
- 运算符的各种尝试
- 运算符,各种数据类
- C#编程--C#运算符
- C#中日期运算以及获取日期的各种格式
- C# 运算符
- C#运算符
- C# 运算符
- C#运算符资料
- C#运算符重载
- c#运算符详解
- 关于php的时间相关函数需要注意时区问题
- 安装centos6.3x86上的nagios
- 次小生成树
- Axis2 实现异步调用
- Oracle从10g升级到11g详细步骤
- c#各种运算符
- shell判断一个变量是否为空
- eclipse 国际化的插件 properties
- 如何确定电缆组件的性能
- Git 使用记录
- 内存池及其实现
- sqlserver实现结果集的合并(干货)
- 由12306.cn谈谈网站性能技术
- 新接触oracle数据库需要了解的东西