c#泛型不能代替对象类型

问题描述:

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)会出错,为什么?c#泛型不能代替对象类型

+5

什么是错误? – Steve

+0

解释问题。 –

+1

您已确保添加的结果是'double'类型。然后您将其放入并尝试将其解除为“int”。除了某些枚举的特殊选项外,您无法将其装箱到不同的数据类型。 –

使用此。

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

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

+0

谢谢你运行正确。我的英语很差,问题描述如此糟糕 –

+0

接受它作为回答,如果它解决了您的问题。 – Parag