目前我们已经学习了整数类型数据,如sbyte、byte、ulong等(可以参考3-4-1节);浮点数类型数据,如float、double和decimal(可以参考3-5-1节);以及字符数据char,可以参考3-7节。这些数据可以互相转换,这就是所谓的数据类型的转换。所以数据类型的转换概念是将一种数据类型转换成另一种数据类型,有隐式转换(implicit conversion)和显式转换(explicit conversion)等两种转换方式。
所谓的隐式转换是指不需要声明就可以进行转换,这种转换编译程序不需要进行检查。转换的特色是可以从比较小的容量数据类型,转移到比较大的容量数据类型,在转换过程数据不会遗失。隐式转换表如表3-8所示。
表3-8 隐式数据类型转换表
方案ch3_22.sln: 将byte、short和char转换成int整数。
从上述第8~9行可以看到字符‘A’将转成65,这类似于将字符转成Unicode码值。
显式转换又称强制转换,这种转换需要转换运算符(casting operator),也就是在程序代码中使用下列语法转换:
变量 = (新数据类型) 变量或表达式 // 新数据类型就是casting operator
这类转换是强制转换,转换的特色是可以从比较大的容量数据类型,转移到比较小的容量数据类型,在转换过程有时会造成数据遗失,表3-9所示为可以显式转换的数据类型表。
表3-9 显示数据类型转换表
方案ch3_23.sln: 使用显式转换将float和double转换成int。
从浮点数double或是双倍精度浮点数double转换成整数int的显式转换中,读者可以看到小数点部分被舍去了。
6-5-3节笔者会介绍使用Convert类相关的数值转换函数。