【发布时间】:2017-04-03 06:48:52
【问题描述】:
public class Calculate
{
public static T Add<T>(T a, T b) where T : struct
{
return (T)((object)(Convert.ToDouble(a) + Convert.ToDouble(b)));
}
}
运行Calculate.Add(10, 20)会报错,为什么?
【问题讨论】:
-
错误是什么?
-
解释问题。
-
您已确保添加的结果是
double类型。然后您将其装箱并尝试将其拆箱为int。除了枚举的一些特殊选项之外,您无法将其拆箱为与已装箱不同的数据类型。 -
不确定为什么要转换为双精度然后再转换为双精度,因为这会导致装箱和拆箱。调用方法时只需执行 10d、20d 或您想要的任何类型的计算。在方法中只需使用 a+ b;
标签: c#