无论什么语言,不同类型变量之间的使用都需要转换操作,有的数据类型之间的转换不需要声明,但有的必须加以声明才能转行成功。
C#语言中数据类型的转换分为两类:显式转换和隐式转换。
隐式转换:即系统默认的,不需要声明就可以转换成功的。在隐式转换过程中,编译器无需对转换进行详细的检查就能够安全的执行。
例如 int -> long 就是一种隐式转换。int i = 10; long l = i;
装箱转换实际上是一种隐式类型转换。
隐式转换的规则:隐式数值转换,隐式枚举转换,隐式引用转换。
隐式数值转换:不存在char的类型转换。
隐式枚举转换:允许将0转换成任何枚举类型,其他的数值不行。
隐式引用转换:数组之间的转换要看数组的类型。null可以转换为任何应用类型。
显式转换:又叫强制类型转换,需要用户明确的指定要转换的类型。所有的隐式转换都是显式转换。
显式转换的规则:显式数值转换、显式枚举转换、显式引用转换。
显式数值转换:数值之间类型转换可能抛出溢出异常。
显式枚举转换:可以显式转换为数值类型,以及其他枚举类型。
显式引用转换:在转换之前,需要进行数据类型的转换检测,以确保数据转换的正确性。
无论隐式引用转换还是显式引用转换,虽然会改变数据的类型,但不会改变值本身。
对于数值和枚举,不会改变数据的值。