两个 int 相加的方法为:
int Add(int a, int b)
{
    return a + b;
}
以上完全正确吧,那使用泛型呢?如:
T Add<T>(T a, T b)
{
    return a + b; // 我知道这样是不行的,但我要实现这相加操作
}
则出现错误:运算符“+”无法应用于“T”和“T”类型的操作数我也知道原因,问题是我该如何实现 a + b 呢?一定要使用反射么?有没简单点的方法?别告诉我一个类型一个类型的判断谢谢了

解决方案 »

  1.   

    使用操作符的重载
    public static <return type> operator <op> (parameter list)
    {implementation code}
    规则
    要求public static操作符
    返回值应为类类型,不能是void
    op是双目,单目或关系操作符,以及相应数目的参数。比如
    public static T operator +(T a,T b)
    {
      //你想返回的内容
    }
      

  2.   

    to blueiv : 尊重别人就是尊重自己to smaworm : 
    我要实现的是:
    T Add<T>(T a, T b)
    {
        return a + b; // 我知道这样是不行的,但我要实现这相加操作
    }
      

  3.   

    http://www.cnblogs.com/coding1016/archive/2007/11/30/978513.html     代码生成器
      

  4.   

    怎么CSDN都没人明白我的意思啊...已经很清除了啊
    T Add<T>(T a, T b)
    {
        return a + b; // 我知道这样是不行的,但我要实现这相加操作
    }要实现 a + b,T Add<T>(T a, T b) 方法体该如何写?
      

  5.   

    引:
    ------------
    则出现错误:运算符“+”无法应用于“T”和“T”类型的操作数
    我也知道原因,问题是我该如何实现   a   +   b   呢?
    一定要使用反射么?有没简单点的方法?别告诉我一个类型一个类型的判断 
    ----------------先问自己,小学是老师告诉过你,两个不知道类型的东西怎么相加了吗?如果有听你老师的。不知道类型,在C#.NET里是不能被相加的。
      

  6.   

    问题都没有说清楚你要别人怎么回答啊。是合并List<>??还是把两个List<>里面相同索引的数据加起来么???
      

  7.   

    假如是 a 和 b 是 byte 类型,那么结果为 a + b
    假如是 a 和 b 是 int 类型,那么结果也为 a + b
    假如是 a 和 b 是 float 类型,那么结果也为 a + b
    假如是 a 和 b 是 string 类型,那么结果也为 a + b
    假如是 a 和 b 是 其他类型,那么结果也为 a + b(只要类型支持相加)
      

  8.   

    假如是   a   和   b   是   byte   类型,那么结果为   a   +   b 
    假如是   a   和   b   是   int   类型,那么结果也为   a   +   b 
    假如是   a   和   b   是   float   类型,那么结果也为   a   +   b 
    假如是   a   和   b   是   string   类型,那么结果也为   a   +   b 
    假如是   a   和   b   是   其他类型,那么结果也为   a   +   b(只要类型支持相加) 清除了没?
      

  9.   

      public static int test<T>(ref T a,ref T b)
            {
                //把你传进来的T类型转换成object类型或者是string类型,然后转成你要相加的类型就OK了
                object obj = a;
                int c = (int)obj;
                object obj1=b;
                int d=(int)obj1;
                return a+b;
            }
      

  10.   

            public static void AddDemo<T>(T a, T b)
            {
                if (a.GetType().FullName == "System.Int32")
                {
                    object v1 = a;
                    object v2 = b;
                    int x = (int)v1 + (int)v2;
                    Console.WriteLine(x);
                }
            }如果想扩展的话,把if扩展成switch就可以了