类型转换-ConvertUtil
# EasyTool.ConvertUtil 类
静态工具类 ConvertUtil,用于提供常见类型之间的转换方法。
# ToInt32-将字符串转换为整型
public static int ToInt32(string value)
- 参数
value
:要转换的字符串。
- 返回值
转换成功则返回转换后的整型值,否则返回0。
# ToInt64-将字符串转换为长整型
public static long ToInt64(string value)
- 参数
value
:要转换的字符串。
- 返回值
转换成功则返回转换后的长整型值,否则返回0。
# ToBoolean-将字符串转换为布尔型
public static bool ToBoolean(string value)
- 参数
value
:要转换的字符串。
- 返回值
转换成功则返回转换后的布尔型值,否则返回false。
# ToSingle-将字符串转换为单精度浮点型
public static float ToSingle(string value)
- 参数
value
:要转换的字符串。
- 返回值
转换成功则返回转换后的单精度浮点型值,否则返回0。
# ToDouble-将字符串转换为双精度浮点型
public static double ToDouble(string value)
- 参数
value
:要转换的字符串。
- 返回值
转换成功则返回转换后的双精度浮点型值,否则返回0。
# ToDecimal-将字符串转换为十进制数
public static decimal ToDecimal(string value)
- 参数
value
:要转换的字符串。
- 返回值
转换成功则返回转换后的十进制数值,否则返回0。
# ToDateTime-将字符串转换为日期时间
public static DateTime ToDateTime(string value)
- 参数
value
:要转换的字符串。
- 返回值
转换成功则返回转换后的日期时间值,否则返回DateTime.MinValue
。
# ToEnum-将字符串转换为枚举类型
public static T ToEnum<T>(string value, T defaultValue = default(T)) where T : struct
- 参数
value
:要转换的字符串。
defaultValue
:转换失败时返回的默认值。
- 返回值
转换成功则返回转换后的枚举类型值,否则返回指定的默认值。
# To-将对象转换为指定类型
public static T To<T>(object value)
- 参数
value
:要转换的对象。
- 返回值
转换成功则返回转换后的指定类型值,否则返回指定类型的默认值。
# 核心概念
C#中的类型转换可以分为两种:隐式转换和显式转换。
# 隐式转换
隐式转换是指从一个小范围类型转换为一个大范围类型,这种转换不需要显式地调用转换方法,编译器会自动完成。例如:
int a = 10;
double b = a; // int类型隐式转换为double类型
# 显式转换
显式转换是指从一个大范围类型转换为一个小范围类型,或者从一个非相关的类型转换为另一个类型。这种转换需要显式地调用转换方法,例如:
double a = 10.5;
int b = (int)a; // double类型显式转换为int类型
除此之外,C#还支持使用一些转换方法进行类型转换,例如Convert.ToXXX()
方法和Parse()
方法。这些方法通常用于将字符串转换为其他类型。例如:
string str = "10";
int a = Convert.ToInt32(str); // 将字符串转换为int类型
# 装箱和拆箱
另外还有一种特殊的类型转换叫做装箱和拆箱。
装箱是指将值类型转换为对象类型,拆箱是指将对象类型转换为值类型。装箱和拆箱会涉及到对堆和栈的操作,因此会有一定的性能开销。
装箱和拆箱的示例代码如下:
int a = 10;
object b = a; // 装箱,将int类型转换为object类型
object c = 10;
int d = (int)c; // 拆箱,将object类型转换为int类型
在进行装箱和拆箱时需要注意,如果装箱的值类型是一个结构体,则会在堆上创建一个新的对象,并将值类型的值复制到堆上的对象中。在拆箱时,需要确保对象类型的实际类型和拆箱后要转换的值类型匹配,否则会抛出InvalidCastException
异常。
总之,C#中的类型转换是一个很重要的知识点,对于编写高效、正确的代码来说是必不可少的。需要根据实际情况灵活运用不同的类型转换方式,避免因类型转换不当导致的编译错误或运行时错误。