public class PersonSet<T>{ public List<T> _persons; //泛型元素集合 public PersonSet(){ //构造函数 _persons=new List<T>(); } //输出集合中的所有元素 public void Print(){ 方法一: foreach(T item in _persons){ item.Print (); } 方法二: foreach (T item in _persons) { Object p = (Object)item; ((Person)p).Print (); } } 。。。 }
在这个容器类中定义了一个List<T>数组用来保存Voter类对象数据和Candidate
类对象数据,在Print()函数中,我想输出所有当前数组中的所有类对象(调用各个类对象自己的Print()函数),方法一报错了,报错结果是T中没有Print函数。方法二可以(因为List数组成员不能直接强转成类对象,所以用Object对象做中间引用)。
但显然,用第二种方法又倒回ArraryList数组的一大特性了,装箱-拆箱。没有真正体现List<T>数组的简化装箱-拆箱,提高运行效率的功能。第一种方法应该才是List<t>数组想要体现的对不同类型的相同操作,也是刚学,这个问题,我觉得应该有很简单的解决办法。不知道各位大大能否小告一下嘞?
泛型约束.你定义一个接口.里面有Print() 然后约束泛型T必须实现该接口.就行了
搞定了--哈哈,看到了泛型约束这个东东,非常不错。。越来越感受到c#语言的强大了
谢谢你啦!