什么是类型转换?
两个不同类型的变量赋值,如大空间的值赋给小空间的值,子类的对象赋给父类的对象
eg:
隐式类型转换
数值类型
小容量转大容量 可以隐式转换
特殊:
decimal的精度比double大,但所能储存的最大数却比double要小(double虽然64位,但其精度低,故其可以表示的范围大,decimal虽然是128位,但由于其用了较多的位来表示其精度,只好牺牲表示范围了),所以虽然decimal容量精度大,但是并不能在float&double 和 decimal 间隐式转换。
引用类型
子类可以隐式转换成继承父类和实现的接口,但是转换之后调用子类特有的属性和方法会报错
举例在下方显示类型转换。
装箱
其实装箱就是一个 值类型 隐式转换 成 引用类型 的过程。
c#中使用类型都派生自object类型,但是值类型是高效轻量的类型,在堆上没有存放对象数据,而它转换成引用类型时就需要 装箱 来将数据拷贝一份到堆内存,再将堆内存地址赋给引用类型对象。
显示类型转换
数值类型
在上面数值类型隐式转换图里没有直达箭头的都是强制转换 ^ ^ ~
plan1:
目标类型 变量名 = (目标类型) 源类型变量或值
plan2: