【问题标题】:c# generic can not instead object typec#泛型不能代替对象类型
【发布时间】: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#


【解决方案1】:

使用这个。

 return (T)Convert.ChangeType(Convert.ToDouble(a) + Convert.ToDouble(b), typeof(T));

它将您的结果转换为类型“T”。

【讨论】:

  • 谢谢它运行正确。我的英语很差,问题描述得很糟糕
猜你喜欢
  • 2019-07-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 2017-08-04
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多