显示类型转换
显示转换:需要人为强制干预的数据转换。
转换方法:
- (类型名)表达式
- Convert.To类型名(表达式)
- 类型名.Parse(表达式) 此方法针对数值类型的转换
显示转换要被的条件是:
-
被转换类型的值范围必须包含目标类型的值范围;如果超出目标类型的最大或最小值,则编译器会抛出异常,转换不成功。
-
被转换类型的值同样必须与目标类型兼容。
double类型的值范围大于float类型的值范围,所以float转double可以隐式转换,double转float却需要显示转换。
隐式类型转换
隐式转化:数据的类型的转换由编译器自动进行,不需要人工干预的数据转换。
隐式转换要具备的条件是:
- 被转换类型的值范围必须包含目标类型的值范围;
- 被转换的值的类型必须与目标类型兼容。
在引用类型中,比如类与类之间的转换,同样都需要遵循隐式转换与显示转换的原理和规则。
父类与子类的转换
打个比方,父类是人类,子类是个男子
索取一个人类时,你给了一个男子
这是对的,合理
反过来说,索取一个男子时,你给了一个人类
就不一定正确,容易出错
也可以说是人类的范围比男子的范围大得多,你给的是男子范围那就一定是人类;如果给的是人类,却不一定是男子,也有可能是女子。
装箱、拆箱
装箱:值类型 -> 引用类型
拆箱:引用类型 -> 值类型