【C#语言入门】10. 操作符详解(下)
四、各类操作符的示例
- (T)x
强制类型转换符
//ushort的maxvalue是65535
uint x = 65536;
ushort y =(ushort)x;
Console.WriteLine(y);//结果为0
类型转换
- 隐式(implicit)类型转换
- 不丢失精度的转换(低精度——>高精度(范围完全涵盖了低精度))
- 子类向父类的转换
- 装箱
- 显式(explicit)类型转换
- 有可能丢失精度(甚至发生错误)的转换,即cast
- 拆箱
- 使用Convert类(几乎可以把任意类型转换为任意类型)
- ToString方法与各数据类型的Parse/TryParse方法(parse只能解析结构正确的字符串,tryparse可以先判断一下是不是结构正确的字符串)
- 自定义类型转换操作符
-
*、/、%、+、-
基本无特殊注意点,要注意两边数据类型不同时,遵循“数值提升”原则。 -
<<、>>
位移操作符,数据在内存当中的二进制结构,向左或者向右进行平移。左移加进来的一定是0,右移,操作的是正数,补进来的是0;负数的话,补进来的是1。
int x = 7;
int y = x << 1;
//x= 00000111, y= 00001110,会有溢出如果一直移的话
- <、>、>=、<=、!=、==、is、as
关系操作符,所有关系操作符结果都是布尔类型。is是判断实例的。
teacher t = new Teacher();
var result = t is Teacher;
//结果为true
object o = new Teacher();
Teacher t = o as Theacher;
-
&、^、|
位与、位异或、位或,对位进行操作。 -
&&、||
条件与、条件或,结果都是布尔类型。条件与的短路:当条件与发现左边的结果已经是“假”值了以后,就不会执行右边部分。 -
??
null合并操作符
int? x =null;
int y = x??1;//x如果是null值,则赋y为1
Console.WriteLine(y);//y=1
- ?:
条件操作符,唯一一个三个值互动的操作符,结果为真返回冒号左边的值,反之返回右边的值。
int x =80;
string str = x >= 60 ?"Pass":"Failed";
Console.WriteLine(str);