转换为多种可能的类型

本文关键字:类型 转换 | 更新日期: 2023-09-27 18:31:16

我在互联网上看到了以下代码。谁能向我解释一下它的作用?如果我的标题是错误的,如果我得到正确答案,我会更改它:

public static void Calculate(float amount)
{
   object amountRef = amount;
   int balance = (int)(float)amountRef;
   Console.WriteLine(balance);
};

(int)(float)到底是做什么的?在互联网上很难找到解释。

转换为多种可能的类型

这是关于拳击和拆箱的。

如果将float保存在object(即装箱)中,则需要先使用原始类型将其拆箱。比你的程序投射到int.

这就是为什么你不能说;

object amountRef = amount;
int balance = (int)amountRef;

你会得到;

指定的强制转换无效。错误:拆箱不正确

你想太多了(如果你已经知道铸造的目的)。

几个额外的括号可能会使它更清晰:

(int)((float)amountRef)

amountRef被强制转换为float,则此新float被强制转换为int