在C#编程中,数据类型转换是处理不同数据交互时的常见需求,Convert类位于System命名空间下,提供了一组静态方法,用于支持多种基础数据类型之间的相互转换,是处理类型转换的常用工具之一。

Convert类的基础概念
Convert类的所有方法都是静态的,不需要创建实例就可以直接调用,它支持将一种数据类型转换为另一种兼容的数据类型,转换过程中如果数据无法正确转换,会抛出对应的异常。和强制类型转换不同,Convert类的转换逻辑更通用,支持更多类型的组合转换。
常用Convert类型转换方法
数值类型之间的转换
Convert类提供了从各种数值类型到其他数值类型的转换方法,比如将字符串转换为整数、将整数转换为浮点数等,以下是常见的数值转换示例:
using System;
class Program
{
static void Main()
{
// 字符串转整数
string strNum = "123";
int intNum = Convert.ToInt32(strNum);
Console.WriteLine($"字符串转整数结果:{intNum}");
// 整数转双精度浮点数
int originInt = 45;
double doubleNum = Convert.ToDouble(originInt);
Console.WriteLine($"整数转双精度浮点数结果:{doubleNum}");
// 字符串转单精度浮点数
string strFloat = "3.14";
float floatNum = Convert.ToSingle(strFloat);
Console.WriteLine($"字符串转单精度浮点数结果:{floatNum}");
}
}
其他常见类型转换
除了数值类型,Convert类还支持布尔值、字符、日期时间等类型的转换,以下是相关示例:
using System;
class Program
{
static void Main()
{
// 字符串转布尔值
string strBool = "true";
bool boolVal = Convert.ToBoolean(strBool);
Console.WriteLine($"字符串转布尔值结果:{boolVal}");
// 字符转整数(获取字符的ASCII码)
char ch = 'A';
int asciiVal = Convert.ToInt32(ch);
Console.WriteLine($"字符A的ASCII码:{asciiVal}");
// 字符串转日期时间
string strDate = "2024-05-20";
DateTime dateVal = Convert.ToDateTime(strDate);
Console.WriteLine($"字符串转日期时间结果:{dateVal}");
}
}
Convert转换的注意事项
- 转换的数据必须符合目标类型的格式要求,比如将字符串"abc"转换为整数时,会抛出
FormatException异常。 - 数值转换时如果超出目标类型的范围,会抛出
OverflowException异常,比如将值300转换为byte类型时就会触发该异常。 - 对于可空类型,Convert类没有直接对应的转换方法,需要先判断值是否存在,再进行转换操作。
- 和
Parse方法相比,Convert类可以处理null值,将null转换为数值类型时会得到0,转换为布尔值时会得到false,而Parse方法处理null会直接抛出异常。
Convert与强制类型转换的区别
很多开发者会混淆Convert转换和强制类型转换,两者的核心区别如下:
| 对比项 | Convert类型转换 | 强制类型转换 |
|---|---|---|
| 适用场景 | 不同兼容数据类型之间的通用转换,支持字符串到数值等跨类型转换 | 同一继承链下的类型转换,或者数值类型之间的显式窄化转换 |
| null值处理 | 可以处理null值,返回对应类型的默认值 | 处理null值会抛出NullReferenceException异常 |
| 异常处理 | 转换失败会抛出FormatException、OverflowException等异常 | 转换失败会抛出InvalidCastException异常 |
实际开发中的使用建议
在实际开发中,如果明确知道数据的格式符合要求,且需要处理null值场景,优先使用Convert类进行转换;如果确定数据是目标类型的实例,或者需要进行引用类型的向下转换,可以使用强制类型转换。如果不确定转换是否成功,建议搭配try-catch块捕获转换过程中的异常,避免程序崩溃。
注意:在使用Convert类进行转换前,最好先通过对应类型的TryParse方法验证数据格式,确认格式正确后再进行转换,这样可以减少异常抛出的概率,提升程序的稳定性。
C#Convert类型转换类型转换方法基础教程修改时间:2026-07-12 00:21:22