首页 新闻 会员 周边 捐助

怎么访问 保存类对象 的泛型数组 的各个对象的方法?

0
悬赏园豆:20 [已解决问题] 解决于 2017-04-20 08:58
复制代码
    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>数组想要体现的对不同类型的相同操作,也是刚学,这个问题,我觉得应该有很简单的解决办法。不知道各位大大能否小告一下嘞?

风人的主页 风人 | 初学一级 | 园豆:132
提问于:2017-04-19 21:30
< >
分享
最佳答案
0

泛型约束.你定义一个接口.里面有Print() 然后约束泛型T必须实现该接口.就行了

收获园豆:20
吴瑞祥 | 高人七级 |园豆:29449 | 2017-04-19 22:38

搞定了--哈哈,看到了泛型约束这个东东,非常不错。。越来越感受到c#语言的强大了

谢谢你啦!

风人 | 园豆:132 (初学一级) | 2017-04-20 08:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册