首页 > 编程笔记 > C#笔记 阅读:52

C#类型转换(隐式类型转换和强制类型转换)

类型转换是将一个值从一种数据类型更改为另一种数据类型的过程。

例如,C# 程序中可以将 string 类型数据“457”转换为一个 int 类型,也可以将任意类型的数据转换为 string 类型。

数据类型转换有两种方式,即隐式转换与强制转换(显式转换):
这种转换规则就像下图所示的两个场景:


图 1 大小水杯转换类比数据类型转换的示意图

高精度相当于一个大水杯,低精度相当于一个小水杯,大水杯可以轻松装下小水杯中所有的水,但小水杯无法装下大水杯中所有的水,装不下的部分必然会溢出。

C#隐式类型转换

隐式类型转换就是不需要声明就能进行的转换,进行隐式类型转换时,编译器不需要进行检查就能自动进行转换。

下列基本数据类型会涉及数据转换(不包括逻辑类型),这些类型按精度从“低”到“高”排列的顺序为:

byte < short < int < long < float < double

可对照下图:


图 2 自动转换的兼容顺序图

其中 char 类型比较特殊,它可以与部分 int 型数字兼容,并且不会发生精度变化。

例如,将 int 类型的值隐式转换成 long 类型,代码如下:
int i = 927;      // 声明一个整型变量i并初始化为927
long j = i;       // 隐式转换成long类型

C#强制类型转换

有很多场合不能隐式地进行类型转换,否则编译器就会出现错误。

例如,下面的类型在进行隐式转换时会出现错误:
如果遇到上面类型之间的转换,就需要用到 C# 中的强制类型转换。强制类型转换也被称为显式类型转换,它需要在代码中明确地声明要转换的类型。如果要把高精度的变量转换为低精度的变量,就需要使用强制类型转换。

强制类型转换的一般形式为:

(类型说明符)表达式

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如,下面的代码用来把 x 转换为 float 类型:
(float)x
通过强制类型转换,就可以解决高精度数据向低精度转换的问题。例如,将 double 类型的值 4.5 赋值给 int 类型变量时,可以使用下面的代码实现:
int i;
i = (int)4.5; // 使用强制类型转换

相关文章