强制转换(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# 参考)

概念

C# 编程指南
转换运算符(C# 编程指南)
通用类型转换
显式转换
导出类型转换