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可以进行哪些数据类型的转换
方法 | 说明 |
| 将char[]转换成byte[] |
| 将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无符号长整型 |
请注意,在使用上面这些方法时,如果所提供的实参数据不能转换成另一种类型时,则会报错。
比如,我们将一个字符串转换成一个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过程中,也经常会碰到这样的错误提示: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日