如何正确应用范型返回值?
关于这个函数,正确应用范型返回值,该如何修改?
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"的字串,过来,无论走那个分支都是错的。但是从你外面暴露的接口来看没有问题。