2011-07-30 29 views
2

我寫此外整數,浮點數的一般方法,雙通用的方法來添加整數,浮點,在C#

public T Swap<T>(T value1, T value2) 
{ 
    T temp; 
    temp = value1 +value2; 
    return temp; 
} 

我得到一個錯誤:

操作「+ '不能應用於類型'T'和'T'的操作數

我使用的是VS 2005,任何人都可以告訴我如何實現它?

+3

它不能完成。沒有辦法將一個泛型類型限制爲數字,這將(手動)成爲完成這項工作所必需的。 –

+0

沒有單聲道做基本算術接口的東西,編譯器支持基本類型?我不知道微軟需要多長時間才能意識到這將是他們發佈的一個很好的補充。 –

回答

6

你不能直接這樣做。 .NET中的泛型不支持它。不過,也有其他方案可供選擇:

  • 在C#4,你可以使用動態類型:

    public static T Sum<T>(T value1, T value2) 
    { 
        dynamic temp = value1; 
        temp += value2; 
        return temp; 
    } 
    

    編輯:我沒有注意到您正在使用VS2005。你真的?任何機會,你可以升級到更近一點的東西?

  • Marc Gravell在MiscUtil中編寫代碼,以便與代表非常高效地完成此操作。有關更多信息,請參閱usage page。在MiscUtil中的實現使用C#3和.NET 3.5,但我相信Marc使用DynamicMethod在.NET 2中實現了相同想法的單獨的。我們可以通過ping他來檢查您是否需要...

+1

我不認爲你可以在VS2005中做C#4。 – hatchet

+0

@hatchet:嘎,我錯過了2005位。將編輯。 –

0

您可以將value1和value2轉換爲+運算符的正確類型。考慮到T可以是任何類型,你可能想要確保它們是你想要的類型。