日期:2014-05-18  浏览次数:20643 次

如何正确应用范型返回值?
关于这个函数,正确应用范型返回值,该如何修改?
protected T Add<T>(T x)
  {
  if (typeof(T) == typeof(Int16))
  {
  return (Int16.Parse(x) * 2);
  }

  if (typeof(T) == typeof(String))
  {
  return ((Int16.Parse(x) * 2).ToString());
  }
  }

------解决方案--------------------
楼主想要的东西用泛型无法实现
泛型对应的类型有可能是任何类型,一般不参与运算、不使用其方法、属性的
即使加上where限定符,能做的操作也非常有限,目前看来,只当容器使用
------解决方案--------------------
楼主的思路就错了,范型之所以是范型。就是在内部操作的时候不会在意他的实际类型。
楼主的方法就不应该支持String的传入。

protected T Add <T>(T x):int 

。。。
}

如果我没有记错的话,应该是这么写。
------解决方案--------------------
一般范型都是用来传递接口,或者继承类的。在范型方法体中提供公用操作。

按楼主的方法的话,我穿一个 "abc"的字串,过来,无论走那个分支都是错的。但是从你外面暴露的接口来看没有问题。