2017-04-03 50 views
-3
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」。除了某些枚舉的特殊選項外,您無法將其裝箱到不同的數據類型。 –

回答

0

使用此。

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

它會將您的結果轉換爲類型「T」。

+0

謝謝你運行正確。我的英語很差,問題描述如此糟糕 –

+0

接受它作爲回答,如果它解決了您的問題。 – Parag