📜  C#-类型转换(1)

📅  最后修改于: 2023-12-03 15:00:14.100000             🧑  作者: Mango

C#-类型转换

在编写 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,使用了强制转换运算符。需要注意的是,使用强制转换运算符进行类型转换时,可能会出现精度损失或溢出的情况。

Convert 类型转换

C# 中的 Convert 类提供了多种类型转换方法,包括将字符串转换为基础数据类型,将不同数据类型之间进行转换等。Convert 类型转换的主要特点是:

  • 使用简单,适用于多种数据类型。
  • 转换结果与目标类型相同,避免了精度损失。
  • 转换失败时会抛出异常。
string s = "100";
int n = Convert.ToInt32(s);

上述代码中,将字符串类型的 s 转换为 int 类型的 n,使用了 Convert.ToInt32 方法。

Parse 方法转换

C# 中的基础数据类型提供了 Parse 方法,可以将字符串转换为基础数据类型。与 Convert 类型转换相比,Parse 方法转换的特点是:

  • 适用于转换基础数据类型。
  • 转换结果与目标类型相同,避免了精度损失。
  • 转换失败时会抛出异常。
string s = "100";
int n = int.Parse(s);

上述代码中,将字符串类型的 s 转换为 int 类型的 n,使用了 int.Parse 方法。

TryParse 方法转换

C# 中的基础数据类型提供了 TryParse 方法,可以将字符串转换为基础数据类型。与 Parse 方法转换相比,TryParse 方法转换的特点是:

  • 适用于转换基础数据类型。
  • 转换结果与目标类型相同,避免了精度损失。
  • 转换失败时不会抛出异常,而是返回 false。
string s = "100";
int n;
bool result = int.TryParse(s, out n);

上述代码中,将字符串类型的 s 转换为 int 类型的 n,使用了 int.TryParse 方法。如果转换失败,result 会返回 false。

as 和 is 关键字转换

在 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 关键字转换。在选择类型转换机制时,需要根据具体情况选择最合适的方式,避免因转换方式选择不当而导致程序出错。