C#中的类型转换分为强制转换和尝试转换两种方法。
强制转换
强制转换是将一种数据类型转换为另一种数据类型,如果无法转换则会在运行时产生异常。在C#中,强制转换使用一对小括号来实现,括号中放置需要被转换的数据类型。例如:
int i = 10;
double d = (double)i;
在这个例子中,将一个整型变量i
强制转换为double
类型,结果存储在另一个double
类型的变量d
中。
如果转换对象的数据类型无法被强制转换为目标类型,则会抛出异常。例如:
string s = "abc";
int i = (int)s; // 会抛出 InvalidCastException 异常
在这个例子中,将一个字符串类型的变量s
强制转换为整型int
,但由于字符串类型无法强制转换为整型类型,因此会在运行时抛出InvalidCastException
异常。
尝试转换
尝试转换的方法比强制转换更加安全,它可以避免运行时的异常。在C#中,尝试转换使用as
关键字或TryParse
方法来实现。
使用 as 关键字实现尝试转换
as
关键字用于尝试转换一个对象类型到指定的类型,如果转换失败,as
运算符将返回null
。例如:
object obj = "123";
string str = obj as string; // 由于 obj 是一个字符串类型,因此转换成功,结果为 "123"
double d = obj as double; // 由于 obj 不是一个 double 类型,因此转换失败,结果为 null
使用 TryParse 方法实现尝试转换
TryParse
方法是一种更加常用和更加安全的类型转换方法。它能够将字符串或者其他类型的对象转换为数值类型、日期时间类型等等,而且不会引发异常。
例如,将一个字符串类型的变量转换为整型类型:
string s = "123";
int i = 0;
bool success = int.TryParse(s, out i);
if (success)
{
Console.WriteLine($"Success! i = {i}");
}
else
{
Console.WriteLine("Failed!");
}
在这个例子中,TryParse
方法将字符串s
转换为整型int
类型,如果转换成功,则将转换后的结果存放在变量i
中,并返回true
。如果转换失败,则返回false
。
示例
以下是强制转换和尝试转换的两个示例:
强制转换示例
double d = 1.2;
int i = (int)d; // 将 double 类型的变量 d 强制转换为 int 类型,i 的值为 1
尝试转换示例
string s = "123";
int i;
if (int.TryParse(s, out i))
{
Console.WriteLine($"Success! i = {i}");
}
else
{
Console.WriteLine("Failed!");
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#强制转换和尝试转换的方法 - Python技术站