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

C# Convert进行类型转换的用法(附带实例)

C# 程序中,可以使用“(类型说明符)表达式”进行强制类型转换。例如,使用这种方式实现将 long 型数据转换成 int 型数据:
long l = 3000000000;
int i = (int)l;
按照代码的本意,i 的值应该是 3000000000,但在运行这两行代码时,却发现 i 的值是 -1294967296,这主要是由于 int 类型的最大值为 2147483647,很明显,3000000000 要比 2147483647 大,所以在使用上面代码进行显式类型转换时,出现了与预期不符的结果,但是程序并没有报告错误。如果在实际开发中遇到这种情况,可能会引起大的 BUG。

那么,在遇到这种错误时,有没有一种方式能够向开发人员报告错误呢?

答案是肯定的。C# 中提供了 Convert 类,该类也可以进行显式类型转换,它的主要作用是将一个基本数据类型转换为另一个基本数据类型。Convert 类的常用方法及说明如下表所示。

表:Convert 类的常用方法及说明
方 法 说 明
ToBoolean() 将指定的值转换为等效的布尔值
ToByte() 将指定的值转换为 8 位无符号整数
ToChar() 将指定的值转换为 Unicode 字符
ToDateTime() 将指定的值转换为 DateTime
ToDecimal() 将指定值转换为 Decimal 数字
ToDouble() 将指定的值转换为双精度浮点数字
ToInt32() 将指定的值转换为 32 位有符号整数
ToInt64() 将指定的值转换为 64 位有符号整数
ToSByte() 将指定的值转换为 8 位有符号整数
ToSingle() 将指定的值转换为单精度浮点数字
ToString() 将指定值转换为其等效的 String 表示形式
ToUInt32() 将指定的值转换为 32 位无符号整数
ToUInt64() 将指定的值转换为 64 位无符号整数

例如,定义一个 double 类型的变量 x,并赋值为 198.99,使用 Convert 类将其显式转换为 int 类型,代码如下:
double x = 198.99;      //定义double类型变量并初始化
int y = Convert.ToInt32(x);  //使用Convert类的方法进行显式类型转换

下面使用 Convert 类的 ToInt32() 对本节开始的两行代码进行修改,修改后的代码如下:
long l=3000000000;
int i = Convert.ToInt32(l);

再次运行这两行代码,则会出现如下图所示的错误提示:


图 1 显式类型转换的错误提示

这样,开发人员即可根据图 1 中的错误提示对程序代码进行修改,避免程序出现逻辑错误。

相关文章