我正在准备考试,偶然发现了有关装箱/拆箱的问题。 我一直以为如果我盒子让我们说这样的漂浮物:
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)看起来是正确的。所以,请你赐教?我错过了什么?
亲切的问候
答案 0 :(得分:2)
你没有遗漏任何东西
答案应该是(b)因为:
(a)因您尝试将object
转换为int
而抛出异常。
(b)是正确的,因为你首先将它投射到float
,然后你把它投射到int
,它围绕它但不会抛出异常。