比如我有一个类,Node,现在想定义一个类NodeCollection
1.public class NodeCollection : List<Node>{...}
2.public class NodeCollection
  {
    private ArrayList mynodes;
    public int Add(Node newnode)
    {
      return this.mynodes.Add(newnode);
    }
    ...
  }
3.从Ilist,Iconllection等接口继承而来想问问大家
1.哪一种方法比较好?
2.听说集合中有装箱,拆箱会降低效率,以上方法那个有装箱拆箱?
3.有没有人能提个更好的方案?你们平时都是怎么做的?小弟在这先谢了!!

解决方案 »

  1.   

    谢谢楼上的支持,虽然没有给加分~~呵呵
    我想做这个是因为我看到.framework中就有这样的情况比如:listbox类中有一个属性:items,它的类型是objectcollection,我想微软既然这么做,而不是直接用一个object的数组,自然有他的理由,所以我自己在做一个类的集合的时候也想模仿一下,但是我不知道他是以什么方式实现的。所以发帖来学习一下~
    谢谢!!
      

  2.   

    微软这么做,是因为listbox控件的items属性是必须允许动态添加和删除数组元素,所以这个工作objectcollection类已经为我们做好了,就没有必要留给我们开发人员自己实现。搂主说的三种方式,效果都是一样的,呵呵
      

  3.   

    因为最终都依赖Ilist接口或者是CollectionBase类
      

  4.   

    呵呵,谢谢了,不过我提的三种方法是不是有装箱拆箱的问题呀?
    是不是从collectionbase继承最好?因为这个基类就是微软提供出来做集合的吧?
    谢谢了!!
      

  5.   

    仁者见仁的问题,我一般直接从Icollection里继承
      

  6.   

    ArrayList中保存的是object,你如果插入int这样的值类型,就涉及到装箱和拆箱。
    建议用泛型,也就是 List <Node>这样的方式,直接指定了类型