在c#中添加int,float的泛型方法

时间:2011-07-30 15:29:50

标签: c# generics

我正在编写一个添加整数的通用方法,float,double

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

我收到错误:

运算符'+'不能应用于'T'和'T'类型的操作数

我正在使用VS 2005,谁能告诉我如何实现它?

2 个答案:

答案 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中有相同想法的单独实现。我们可以打电话给他,检查你是否需要......

答案 1 :(得分:0)

您可以将value1和value2转换为+运算符的正确类型。鉴于T可以是任何类型,您可能希望在执行此操作之前确保它们是您要将它们强制转换为的类型。