泛型使用问题
我想这样,让一个方法,根据传入不同的值类型做不同的处理。
-------------------------------------------------------
public Tinput1 Compute <Tinput1,Tinput2> (Tinput1 t1,Tinput2 t2)
{
if (t1 is int&&t2 is int)
{
t1 = (int)t1;
t2 = (int)t2;
t1 = t1 + t2;
}
else if (t1 is string&&t2 is string)
{
t1 = (string)t1;
t2 = (string)t2;
t1 = t1 + t2;
}
else if (t1.GetType().IsSubclassOf(typeof(object)))
{
this.b = t1.Equals(t2);
t1 = (bool)t1;
t1 = Convert.ToInt32(this.b);
}
return t1;
}
但是出现8个错误,不能t1 = (int)t1;t2 = (int)t2;t1 = (string)t1;t1 = t1 + t2;等,那有什么办法 让它可以呢?
------解决方案--------------------t1 = (int)t1;
t2 = (int)t2;
t1 = t1 + t2;
=====>
return (int)t1 + (int)t2;
------解决方案--------------------你的代码中都没用上泛型....你的方法实际上是
public object Compute(object t1,object t2);
不过是批一件没有意义的泛型的皮. 泛型的好处是把类型检查提前到了编译时,但是你在运行的时候执行了这么多的 is 啊强制转换啊.....
而且最后那个else逻辑明显有问题
t1 = (bool)t1;
从哪里让你觉得这个语句可以执行成功了?
------解决方案--------------------你这种情况不要用泛型,用方法重载不管在执行效率上还是维护性上都更好