随笔 11. Convert类型转化工具类

48 阅读4分钟

Convert 是 .NET Framework 中的一个工具类,提供了很多静态方法,用于将一种数据类型转换为另一种数据类型。相比于直接调用类型的转换方法(如 int.Parsedouble.ToString()),Convert 提供了更灵活且安全的转换方式,尤其是在处理 null 或不确定类型时。

Convert 类的常用方法和特点

1. Convert.ToString

  • 用途: 将任意对象转换为字符串。

  • 特点:

    • 处理 null: 如果传入的对象是 null,则返回空字符串 "" 而不会抛出异常。这是它比直接调用 ToString() 的一个优势。
    • 常用场景: 将对象(如 intdoubleDateTimebool 等)转换为字符串形式。
  • 示例:

    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

  • 用途: 将对象转换为布尔值 (TrueFalse)。

  • 特点:

    • 数值转换: 数值 0 被转换为 False,非零数值转换为 True
    • 字符串转换: "true"(忽略大小写)转换为 True"false" 转换为 False
  • 示例:

    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.231,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 类的特点

  1. 统一的接口: Convert 类为所有类型转换提供了一致的接口。无论是数值转换还是日期、布尔值转换,Convert 类方法都有相似的调用方式,易于使用。
  2. 处理 null: 与直接调用类型的转换方法不同,Convert 的许多方法(如 Convert.ToString)可以处理 null 输入,避免抛出异常。这在处理不确定类型的数据时非常有用。
  3. 处理格式不正确的输入: 许多 Convert 方法(如 ToInt32ToDateTime 等)会抛出 FormatExceptionInvalidCastException,如果输入的格式不正确或无法转换。这使得 Convert 类在处理多种类型的输入时提供了更高的安全性。
  4. 自动溢出检测: 在数值类型转换时(如 Convert.ToInt32Convert.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 中非常有用,它提供了一种简便、安全的方式,将不同类型的对象转换为需要的类型。它的灵活性、容错性和一致性使得它在数据转换、输入处理等场景中得到广泛应用。