首页 新闻 赞助 找找看

泛型约束问题

0
悬赏园豆:10 [已解决问题] 解决于 2009-03-14 19:13

能不能将类型参数约束为指定类型,而不是约束为实现了某个接口或继承某个类型。

比如下面一个类:我要求 Tc 的类型 必须是Ta 或者是Tb。

(下面这样定义好象不对。意思好象是Tc 要继承或实现 Ta 和 Tb。)

public class MyClass<Ta, Tb> {

  public void DoSomeThing<Tc>()

      where Tc : Ta, Tb

      {   }

}                  

luotong的主页 luotong | 初学一级 | 园豆:4
提问于:2009-03-13 21:09
< >
分享
最佳答案
0

泛型接口没有或只有且,如果是或的话,你在DoSomeThing方法是到底怎么判断Tc的对象是Ta还是Tb呢,既然不能判断又怎么去调用相应的方法呢……另外你这个即没有返回值也没有参数的方法用泛型的意义在哪里呢……

Gray Zhang | 专家六级 |园豆:17610 | 2009-03-13 22:38
其他回答(2)
0

俺先学。net再学的C#关注!!

子夜星辰 | 园豆:1613 (小虾三级) | 2009-03-14 09:27
0

那当然不可能啊,除非Ta、Tb从一个接口或基类派生。

不然您想想,如果不定义基类,Ta有3个方法(A1,A2,A3),而Tb有3个不同的方法(B1,B2,B3),那在未运行前,你怎么才能让编译器识别到啊

所以接口和基类起码可以保证子类有此方法,在运行时才能动态的调用

Fencer | 园豆:7 (初学一级) | 2009-03-14 18:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册