📅  最后修改于: 2023-12-03 15:00:14.100000             🧑  作者: Mango
在编写 C# 代码时,经常需要将一个数据类型转换为另一个数据类型。C# 提供了多种类型转换机制,下面分别介绍这些机制。
当一个数据类型可以自动转换为另一个数据类型时,称为隐式类型转换。一般情况下,将小范围的数据类型转换为大范围的数据类型时可以自动转换。例如,将 int 类型赋值给 long 类型时,int 类型就会自动转换为 long 类型。
int n = 10;
long m = n;
上述代码中,将 int 类型的 n 转换为 long 类型的 m,这是一种隐式类型转换。
当一个数据类型不能自动转换为另一个数据类型时,需要使用显式类型转换。显式类型转换需要使用强制转换运算符,将数据类型转换为目标类型。例如,将 long 类型的数据转换为 int 类型的数据时,就需要使用强制转换运算符。
long m = 100;
int n = (int)m;
上述代码中,将 long 类型的数据 m 转换为 int 类型的数据 n,使用了强制转换运算符。需要注意的是,使用强制转换运算符进行类型转换时,可能会出现精度损失或溢出的情况。
C# 中的 Convert 类提供了多种类型转换方法,包括将字符串转换为基础数据类型,将不同数据类型之间进行转换等。Convert 类型转换的主要特点是:
string s = "100";
int n = Convert.ToInt32(s);
上述代码中,将字符串类型的 s 转换为 int 类型的 n,使用了 Convert.ToInt32 方法。
C# 中的基础数据类型提供了 Parse 方法,可以将字符串转换为基础数据类型。与 Convert 类型转换相比,Parse 方法转换的特点是:
string s = "100";
int n = int.Parse(s);
上述代码中,将字符串类型的 s 转换为 int 类型的 n,使用了 int.Parse 方法。
C# 中的基础数据类型提供了 TryParse 方法,可以将字符串转换为基础数据类型。与 Parse 方法转换相比,TryParse 方法转换的特点是:
string s = "100";
int n;
bool result = int.TryParse(s, out n);
上述代码中,将字符串类型的 s 转换为 int 类型的 n,使用了 int.TryParse 方法。如果转换失败,result 会返回 false。
在 C# 中,使用 as 和 is 关键字也可以进行类型转换。as 关键字用于将一个对象转换为指定类型,如果不能转换成功,则返回 null。is 关键字用于判断对象是否可以转换为指定类型。
string s = "100";
int? n = s as int?;
bool result = s is int;
上述代码中,首先将 string 类型的 s 转换为 int? 类型的 n,使用了 as 关键字。如果转换失败,n 会返回 null。接着使用了 is 关键字判断 s 是否可以转换为 int 类型。
C# 提供了多种类型转换机制,包括隐式类型转换、显式类型转换、Convert 类型转换、Parse 方法转换、TryParse 方法转换以及 as 和 is 关键字转换。在选择类型转换机制时,需要根据具体情况选择最合适的方式,避免因转换方式选择不当而导致程序出错。