将装箱的浮动装箱拆箱至int

时间:2015-08-25 14:09:53

标签: c# boxing

我正在准备考试,偶然发现了有关装箱/拆箱的问题。 我一直以为如果我盒子让我们说这样的漂浮物:

private

如果想要从public返回一个值类型变量,我必须将其解包到浮点数。

float x = 4.5f;
object o = x;

这应该抛出异常:

o

如果我想将存储在float y = (float)o; 中的值转换为int,我必须首先将其取消装箱并随后进行转换:

int z = int(o);

现在我偶然发现了一个问题:

假设您有这样的方法:

o

您需要确保应用程序不会在无效转换上抛出异常。您应为int z = (int)(float)o; 插入哪个代码段(我认为无效转换是无效的转换例外):

(a)public static void FloorTemperature(float degrees) { object degreesRef = degrees; `xxx` Console.WriteLine(result); } (b)xxx

正确的解决方案是(a),但对我来说(b)看起来是正确的。所以,请你赐教?我错过了什么?

亲切的问候

1 个答案:

答案 0 :(得分:2)

你没有遗漏任何东西

答案应该是(b)因为:

(a)因您尝试将object转换为int而抛出异常。

(b)是正确的,因为你首先将它投射到float,然后你把它投射到int,它围绕它但不会抛出异常。