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#泛型不能代替对象类型
答
使用此。
return (T)Convert.ChangeType(Convert.ToDouble(a) + Convert.ToDouble(b), typeof(T));
它会将您的结果转换为类型“T”。
+0
谢谢你运行正确。我的英语很差,问题描述如此糟糕 –
+0
接受它作为回答,如果它解决了您的问题。 – Parag
什么是错误? – Steve
解释问题。 –
您已确保添加的结果是'double'类型。然后您将其放入并尝试将其解除为“int”。除了某些枚举的特殊选项外,您无法将其装箱到不同的数据类型。 –