想问一个关于自己定义集合类型的问题

shangdf88 2008-11-23 10:59:50
比如我有一个类,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.有没有人能提个更好的方案?你们平时都是怎么做的?

小弟在这先谢了!!
...全文
70 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
etom200401 2008-11-25
  • 打赏
  • 举报
回复
记得使用泛型
xiaoyuzi 2008-11-25
  • 打赏
  • 举报
回复
ArrayList中保存的是object,你如果插入int这样的值类型,就涉及到装箱和拆箱。
建议用泛型,也就是 List <Node>这样的方式,直接指定了类型
grady.lu 2008-11-25
  • 打赏
  • 举报
回复
仁者见仁的问题,我一般直接从Icollection里继承
shangdf88 2008-11-25
  • 打赏
  • 举报
回复
呵呵,谢谢了,不过我提的三种方法是不是有装箱拆箱的问题呀?
是不是从collectionbase继承最好?因为这个基类就是微软提供出来做集合的吧?
谢谢了!!
net5i 2008-11-23
  • 打赏
  • 举报
回复
的确是这样的,这种集合其实也是数组,并不是链表,所以插入删除元素,都会牵涉到元素的移动,很耗效率

不知道搂主是用来做什么的,建议也贴出来
net5i 2008-11-23
  • 打赏
  • 举报
回复
因为最终都依赖Ilist接口或者是CollectionBase类
net5i 2008-11-23
  • 打赏
  • 举报
回复
微软这么做,是因为listbox控件的items属性是必须允许动态添加和删除数组元素,所以这个工作objectcollection类已经为我们做好了,就没有必要留给我们开发人员自己实现。

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

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧