小弟正在学习C#泛型,现在想到一个问题,能不能根据传入参数的类型执行不同的操作,请看下面的代码(应该是伪代码,编译器里面通不过)。请各位大虾不吝赐教。
    public class Test<T>
    {
        public T TestM1(T a,T b)
        {
            if (T == System.TypeCode.Double)
            {
                return a * b;
            }
            else
            {
                return a + b;
            }
        }
    }

解决方案 »

  1.   

    使用下type 进行判断编译器就通过了,就是说你的想法是可以实现的。
      

  2.   

    我上面代码的意思是,传入的两个参数如果是double类型就相乘,如果是其他类型(只考虑预定义类型)就相加。比如,a=1.2,b=2.3,结果就是2.76;a=3,b="4",结果就是"34"。
      

  3.   

    我劝你还是写重载吧,去判断类型的万能方法,程序效率不高T=typeof(double) ...and etc.
      

  4.   

    用泛型来实现这样的功能说明还是没理解泛型的意义
    抛开泛型,就单实现这样的功能,根本都不用泛型,参数都定义成object类型,或者方法重载都可以实现
    或者一定要这样写的话也可以这样判断
    public T TestM1(T a,T b)
      {
      if (a is double)
      {
      return a * b;
      }
      else
      {
      return a + b;
      }
      }
      if (T == System.TypeCode.Double)这句话是肯定不对的
      

  5.   

    如果一定要以T来判断的话也可以这样写
    typeof(T).Equals(typeof(double))