C#开发常用方法汇总(类型转换)
类型转换
C# 中的类型转换有两种:隐式类型转换和显式类型转换(也称为强制类型转换)。
隐式类型转换是将一个范围较小的数据类型转换到一个范围较大的数据类型,编译器会自动进行。例如从 int 到 long,从 float 到 double 等。
byte b = 10;
int i = b; // 隐式转换
int intValue = 42;
long longValue = intValue; // 隐式转换
显式类型转换,即强制类型转换,是将一个范围较大的数据类型转换到一个范围较小的数据类型,或者将一个对象类型转换为另一个对象类型,需要在代码中明确指定。例如从int到byte,double到int等。
int i = 10;
byte b = (byte)i; // 显式转换,需要使用强制类型转换符号
double doubleValue = 3.14;
int intValue = (int)doubleValue; // 强制从 double 到 int,数据可能损失小数部分
C#官方提供了一些类型转换的方法:
1 | ToBoolean 如果可能的话,把类型转换为布尔型。 |
2 | ToByte 把类型转换为字节类型。 |
3 | ToChar 如果可能的话,把类型转换为单个 Unicode 字符类型。 |
4 | ToDateTime 把类型(整数或字符串类型)转换为 日期-时间 结构。 |
5 | ToDecimal 把浮点型或整数类型转换为十进制类型。 |
6 | ToDouble 把类型转换为双精度浮点型。 |
7 | ToInt16 把类型转换为 16 位整数类型。 |
8 | ToInt32 把类型转换为 32 位整数类型。 |
9 | ToInt64 把类型转换为 64 位整数类型。 |
10 | ToSbyte 把类型转换为有符号字节类型。 |
11 | ToSingle 把类型转换为小浮点数类型。 |
12 | ToString 把类型转换为字符串类型。 |
13 | ToType 把类型转换为指定类型。 |
14 | ToUInt16 把类型转换为 16 位无符号整数类型。 |
15 | ToUInt32 把类型转换为 32 位无符号整数类型。 |
16 | ToUInt64 把类型转换为 64 位无符号整数类型。 |
这些方法都定义在 System.Convert 类中,使用时需要包含 System 命名空间。
C# 提供了多种类型转换方法,例如使用 Convert 类、Parse 方法和 TryParse 方法,这些方法可以帮助处理不同的数据类型之间的转换。
Convert 类提供了一组静态方法,可以在各种基本数据类型之间进行转换。
string str = "123";
int num = Convert.ToInt32(str);
Parse 方法用于将字符串转换为对应的数值类型,如果转换失败会抛出异常。
string str = "123.45";
double d = double.Parse(str);
TryParse 方法类似于 Parse,但它不会抛出异常,而是返回一个布尔值指示转换是否成功。
string str = "123.45";
double d;
bool success = double.TryParse(str, out d);if (success) {Console.WriteLine("转换成功: " + d);
} else {Console.WriteLine("转换失败");
}
总结
方法类别 | 方法 | 描述 |
---|---|---|
隐式转换 | 自动进行的转换 | 无需显式指定,通常用于安全的类型转换,如从较小类型到较大类型 |
显式转换(强制转换) | (type)value | 需要显式指定,通常用于可能导致数据丢失或转换失败的情况 |
Convert 类方法 | Convert.ToBoolean(value) | 将指定类型转换为 Boolean |
Convert.ToByte(value) | 将指定类型转换为 Byte | |
Convert.ToChar(value) | 将指定类型转换为 Char | |
Convert.ToDateTime(value) | 将指定类型转换为 DateTime | |
Convert.ToDecimal(value) | 将指定类型转换为 Decimal | |
Convert.ToDouble(value) | 将指定类型转换为 Double | |
Convert.ToInt16(value) | 将指定类型转换为 Int16 (短整型) | |
Convert.ToInt32(value) | 将指定类型转换为 Int32 (整型) | |
Convert.ToInt64(value) | 将指定类型转换为 Int64 (长整型) | |
Convert.ToSByte(value) | 将指定类型转换为 SByte | |
Convert.ToSingle(value) | 将指定类型转换为 Single (单精度浮点型) | |
Convert.ToString(value) | 将指定类型转换为 String | |
Convert.ToUInt16(value) | 将指定类型转换为 UInt16 (无符号短整型) | |
Convert.ToUInt32(value) | 将指定类型转换为 UInt32 (无符号整型) | |
Convert.ToUInt64(value) | 将指定类型转换为 UInt64 (无符号长整型) | |
Parse 方法 | Boolean.Parse(string) | 将字符串解析为 Boolean |
Byte.Parse(string) | 将字符串解析为 Byte | |
Char.Parse(string) | 将字符串解析为 Char | |
DateTime.Parse(string) | 将字符串解析为 DateTime | |
Decimal.Parse(string) | 将字符串解析为 Decimal | |
Double.Parse(string) | 将字符串解析为 Double | |
Int16.Parse(string) | 将字符串解析为 Int16 | |
Int32.Parse(string) | 将字符串解析为 Int32 | |
Int64.Parse(string) | 将字符串解析为 Int64 | |
SByte.Parse(string) | 将字符串解析为 SByte | |
Single.Parse(string) | 将字符串解析为 Single | |
UInt16.Parse(string) | 将字符串解析为 UInt16 | |
UInt32.Parse(string) | 将字符串解析为 UInt32 | |
UInt64.Parse(string) | 将字符串解析为 UInt64 | |
TryParse 方法 | Boolean.TryParse(string, out bool) | 尝试将字符串解析为 Boolean ,返回布尔值表示是否成功 |
Byte.TryParse(string, out byte) | 尝试将字符串解析为 Byte ,返回布尔值表示是否成功 | |
Char.TryParse(string, out char) | 尝试将字符串解析为 Char ,返回布尔值表示是否成功 | |
DateTime.TryParse(string, out DateTime) | 尝试将字符串解析为 DateTime ,返回布尔值表示是否成功 | |
Decimal.TryParse(string, out decimal) | 尝试将字符串解析为 Decimal ,返回布尔值表示是否成功 | |
Double.TryParse(string, out double) | 尝试将字符串解析为 Double ,返回布尔值表示是否成功 | |
Int16.TryParse(string, out short) | 尝试将字符串解析为 Int16 ,返回布尔值表示是否成功 | |
Int32.TryParse(string, out int) | 尝试将字符串解析为 Int32 ,返回布尔值表示是否成功 | |
Int64.TryParse(string, out long) | 尝试将字符串解析为 Int64 ,返回布尔值表示是否成功 | |
SByte.TryParse(string, out sbyte) | 尝试将字符串解析为 SByte ,返回布尔值表示是否成功 | |
Single.TryParse(string, out float) | 尝试将字符串解析为 Single ,返回布尔值表示是否成功 | |
UInt16.TryParse(string, out ushort) | 尝试将字符串解析为 UInt16 ,返回布尔值表示是否成功 | |
UInt32.TryParse(string, out uint) | 尝试将字符串解析为 UInt32 ,返回布尔值表示是否成功 | |
UInt64.TryParse(string, out ulong) | 尝试将字符串解析为 UInt64 ,返回布尔值表示是否成功 |