Convert 是 .NET Framework 中的一个工具类,提供了很多静态方法,用于将一种数据类型转换为另一种数据类型。相比于直接调用类型的转换方法(如 int.Parse 或 double.ToString()),Convert 提供了更灵活且安全的转换方式,尤其是在处理 null 或不确定类型时。
Convert 类的常用方法和特点
1. Convert.ToString
-
用途: 将任意对象转换为字符串。
-
特点:
- 处理
null: 如果传入的对象是null,则返回空字符串""而不会抛出异常。这是它比直接调用ToString()的一个优势。 - 常用场景: 将对象(如
int、double、DateTime、bool等)转换为字符串形式。
- 处理
-
示例:
Dim str As String = Convert.ToString(Nothing) ' 返回 "" Dim numStr As String = Convert.ToString(123) ' 返回 "123"
2. Convert.ToInt32
-
用途: 将对象转换为
int(32位整数)。 -
特点:
- 处理
null或空字符串: 如果传入的是null或空字符串,则会抛出FormatException异常。 - 兼容数值型字符串: 可以将包含数值的字符串(如
"123")转换为整数。
- 处理
-
示例:
Dim num As Integer = Convert.ToInt32("123") ' 返回 123 Dim zero As Integer = Convert.ToInt32(0.5) ' 返回 0
3. Convert.ToBoolean
-
用途: 将对象转换为布尔值 (
True或False)。 -
特点:
- 数值转换: 数值 0 被转换为
False,非零数值转换为True。 - 字符串转换:
"true"(忽略大小写)转换为True,"false"转换为False。
- 数值转换: 数值 0 被转换为
-
示例:
Dim result As Boolean = Convert.ToBoolean("true") ' 返回 True Dim result2 As Boolean = Convert.ToBoolean(0) ' 返回 False
4. Convert.ToDateTime
-
用途: 将对象转换为
DateTime类型。 -
特点:
- 字符串格式: 能处理标准的日期格式字符串(如
"2023-12-01"或"12/01/2023")。 - 处理
null: 如果传入null或非有效的日期字符串,则会抛出异常。
- 字符串格式: 能处理标准的日期格式字符串(如
-
示例:
Dim dateValue As DateTime = Convert.ToDateTime("2023-12-01")
5. Convert.ToDouble
-
用途: 将对象转换为
Double类型(双精度浮点数)。 -
特点:
- 处理数值字符串: 可以将包含数值的小数字符串转换为双精度浮点数。
- 小数处理: 能处理不同的区域性小数格式(如
1.23或1,23)。
-
示例:
Dim dbl As Double = Convert.ToDouble("123.45") ' 返回 123.45
6. Convert.ToDecimal
-
用途: 将对象转换为
Decimal类型(适合财务和高精度计算的类型)。 -
特点:
- 数值和字符串转换: 支持将整型、浮点数、双精度数以及数值字符串转换为
Decimal。
- 数值和字符串转换: 支持将整型、浮点数、双精度数以及数值字符串转换为
-
示例:
Dim decValue As Decimal = Convert.ToDecimal("123.45")
7. Convert.ToByte
-
用途: 将对象转换为
Byte类型(8位无符号整数,取值范围为 0 到 255)。 -
特点:
- 溢出处理: 如果值超出了
Byte的范围,转换会抛出OverflowException。
- 溢出处理: 如果值超出了
-
示例:
Dim byteValue As Byte = Convert.ToByte(123) ' 返回 123
8. Convert.ToSingle
-
用途: 将对象转换为
Single类型(单精度浮点数)。 -
特点:
- 转换数值和数值字符串: 支持整型、双精度、数值字符串的转换。
-
示例:
Dim singleValue As Single = Convert.ToSingle(123.45)
9. Convert.ToChar
-
用途: 将对象转换为字符 (
Char) 类型。 -
特点:
- 字符串转换: 如果传入的是字符串,只能转换单个字符字符串,否则抛出异常。
-
示例:
Dim charValue As Char = Convert.ToChar("A") ' 返回 'A'
10. Convert.ToInt64
-
用途: 将对象转换为
Long类型(64位整数)。 -
特点:
- 数值转换: 支持从整型、双精度等类型转换为
Int64。
- 数值转换: 支持从整型、双精度等类型转换为
-
示例:
Dim longValue As Long = Convert.ToInt64("1234567890123")
Convert 类的特点
- 统一的接口:
Convert类为所有类型转换提供了一致的接口。无论是数值转换还是日期、布尔值转换,Convert类方法都有相似的调用方式,易于使用。 - 处理
null: 与直接调用类型的转换方法不同,Convert的许多方法(如Convert.ToString)可以处理null输入,避免抛出异常。这在处理不确定类型的数据时非常有用。 - 处理格式不正确的输入: 许多
Convert方法(如ToInt32、ToDateTime等)会抛出FormatException或InvalidCastException,如果输入的格式不正确或无法转换。这使得Convert类在处理多种类型的输入时提供了更高的安全性。 - 自动溢出检测: 在数值类型转换时(如
Convert.ToInt32、Convert.ToByte),如果转换后的值超出了目标类型的范围,Convert会抛出OverflowException,避免错误的数据损失。
示例
Dim str As String = Convert.ToString(123) ' 将整数转换为字符串,返回 "123"
Dim num As Integer = Convert.ToInt32("456") ' 将字符串转换为整数,返回 456
Dim flag As Boolean = Convert.ToBoolean("True") ' 将字符串转换为布尔值,返回 True
Dim dateValue As DateTime = Convert.ToDateTime("2023-12-01") ' 将字符串转换为日期类型
总结
Convert 类在 .NET 中非常有用,它提供了一种简便、安全的方式,将不同类型的对象转换为需要的类型。它的灵活性、容错性和一致性使得它在数据转换、输入处理等场景中得到广泛应用。