强制转换(C# 编程指南)
数据类型之间的转换可以使用强制转换显式进行,但在某些情况下,也允许隐式转换。例如:
static void TestCasting()
{
int i = 10;
float f = 0;
f = i; // An implicit conversion, no data will be lost.
f = 0.5F;
i = (int)f; // An explicit conversion. Information will be lost.
}
显式强制转换调用转换运算符,从一种类型转换为另一种类型。如果未定义相应的转换运算符,则强制转换会失败。可以编写自定义转换运算符,在用户定义类型之间进行转换。有关定义转换运算符的更多信息,请参见 explicit(C# 参考)和 implicit(C# 参考)。
示例
下面的程序将 double 强制转换为 int。如不强制转换则该程序不会进行编译。
class Test
{
static void Main()
{
double x = 1234.7;
int a;
a = (int)x; // cast double to int
System.Console.WriteLine(a);
}
}
输出
1234
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
7.6.6 强制转换表达式
6.1 隐式转换
6.2 显式转换
请参见
参考
数据类型(C# 编程指南)
() 运算符(C# 参考)
explicit(C# 参考)
implicit(C# 参考)