Convert类是C#提供的一个专门用于基本数据类型转换的工具。它是一个静态类型,能够将一种数据类型转换成另一种数据类型。不过,它们都是C#的基础数据类型。

语法格式

数据类型  变量2 = Convert.To数据类型(变量1);

例如将一个字符串转换成bool型。

var result = Convert.ToBoolean("True");
 
 Console.WriteLine($"result = {result} , type = {result.GetType()}");

输出结果

result = True , type = System.Boolean

下表中展示了Convert可以进行哪些数据类型的转换

方法

说明

Convert.FromBase64CharArray()

将char[]转换成byte[]

Convert.FromBase64String()

将string字符串转换成byte[]

Convert.ToBase64CharArray()

将byte[]转换成char[]

Convert.ToBase64String()

将byte[]转换成string字符串

Convert.ToBoolean()

将一种类型转换成bool布尔型

Convert.ToByte()

将一种类型转换成byte字节型

Convert.ToChar()

将一种类型转换成char字符型

Convert.ToDateTime()

将一种类型转换成DateTime型

Convert.ToDecimal()

将一种类型转换成decimal型

Convert.ToDouble()

将一种类型转换成double双精度浮点型

Convert.ToInt16()

将一种类型转换成short短整型

Convert.ToInt32()

将一种类型转换成int整型

Convert.ToInt64()

将一种类型转换成long长整型

Convert.ToSByte()

将一种类型转换成sbyte字节型

Convert.ToSingle()

将一种类型转换成单精度浮点型

Convert.ToString()

将一种类型转换成string字符型

Convert.ToUInt16()

将一种类型转换成ushort无符号短整型

Convert.ToUInt32()

将一种类型转换成uint无符号整型

Convert.ToUInt64()

将一种类型转换成ulong无符号长整型

请注意,在使用上面这些方法时,如果所提供的实参数据不能转换成另一种类型时,则会报错。

Convert数据转换_System

比如,我们将一个字符串转换成一个float类型时,提示:输入字符串的格式不正确。这些错误不会在编译器检查语法错误时报出,而是在程序运行时才报错。所以在转换前一定要注意,明确被转换的变量或常量能够正常进行数据转换。

当然,我们还有别的方式处理这种异常情况,第一种,判断被转换的数据类型是否能进行转换;第二种,采用异常捕获操作。对于上述的错误,我们可以修改字符串的值。如下所示。

string words = "56.78";
 
 float money = Convert.ToSingle(words);
 
 Console.WriteLine($"money = {money} , type = {money.GetType()}");

输出结果

money = 56.78 , type = System.Single

我们继续探索Convert,观察下面的例子

Convert数据转换_类型转换_02

在使用Convert过程中,也经常会碰到这样的错误提示:System.InvalidCastException:“无法将类型为“System.Object”的对象强制转换为类型“System.IConvertible”。”这些错误都是因为被转换的数据类型无法完成转换而报错。但是,如果对这个例子稍加修改,转换就没有问题了。

object obj = "56.78";
 
 float r = Convert.ToSingle(obj);
 
 Console.WriteLine($"r = {r} , type = {r.GetType()}");

输出结果

r = 56.78 , type = System.Single

如果我们不能提前确定某个数据是否可以成功转换成float,那么可以利用tryparse方法进行确认。

string words = "hello,world";
 
 if(float.TryParse(words, out r) )
 
 {
 
     Console.WriteLine($"r = {r} , type = {r.GetType()}");
 
 }
 
 else
 
 {
 
     Console.WriteLine($"{words} 不能转换成float类型");
 
 }
 
  
 
 string text = "12345.67";
 
 if (float.TryParse(text, out r))
 
 {
 
     Console.WriteLine($"r = {r} , type = {r.GetType()}");
 
 }
 
 else
 
 {
 
     Console.WriteLine($"{text} 不能转换成float类型");
 
 }

输出结果

hello,world 不能转换成float类型
r = 12345.67 , type = System.Single

关于TryParse方法,我们会在后面再讲解,因为放在这里有点超纲,这个例子只是展示了这种方法。

最后,我们来看一下将float类型转换成Int型和string型的例子。

float number = 12345.67f;
 
 int integer = Convert.ToInt32(number);
 
 string str = Convert.ToString(number);
 
 Console.WriteLine($"number = {number} , type = {number.GetType()}");
 
  
 
 Console.WriteLine("转换为字符串{0}", str);
 
 Console.WriteLine("转换为整型数据的值{0}", integer);
 
 number = 123.45f;
 
 integer = Convert.ToInt32(number);
 
 str = Convert.ToString(number);
 
 Console.WriteLine("转换为字符串{0}", str);
 
 Console.WriteLine("转换为整型数据的值{0}", integer);

输出结果

number = 12345.67 , type = System.Single
转换为字符串12345.67
转换为整型数据的值12346
转换为字符串123.45
转换为整型数据的值123

从输出结果看,float转int会进行四舍五入再取整操作,float转string则直接将整个数据进行转换,包括小数点和后面的位数,但是没有小写的代表float类型的f字母。

当前课程源码下载:(注明:本站所有源代码请按标题搜索)
文件名:042-Convert数据转换
链接:https://pan.baidu.com/s/1Bq2lX7cruUbklLwgjGggSw
提取码:byte

——重庆教主 2024年1月23日