类型转换

  本书前面说过,无论是什么类型,所有数据都是一系列的位,即一系列 0 和1。变量的含义是通过解释这些数据的方式来确定的。最简单的示例是 char 类型,这种类型用一个数字表示 Unicode 字符集中的一个字符。实际上,这个数字与 ushort 的存储方式完全相同—-它们都存储 0~65535 之间的数字。

  但一般情况下,不同类型的变量使用不同的模式来表示数据。这意味着,即使可以把一系列的位从一种类型的变量移动到另一种类型的变量中(也许它们占用的存储空间相同,也许目标类型有足够的存储空间包含所有的源数据位),结果也可能与预期的不同。

  因此,需要对数据进行类型转换,而不是将数据位从一个变量一对一映射到另一个变量。类型转换采用以下两种形式:

  • 隐式转换:从类型 A 到类型 B 的转换可在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换。

  • 显式转换:从类型 A 到类型 B 的转换只能在某些情况下进行,转换规则比较复杂,应进行某种类型的额外处理。