C#中有没有整数的集合类

runrunrun 2003-01-16 08:15:49
我需要用到一个整数的集合类,发现只能用到框架提供的 ArrayList 类。
但用到这个类有两个问题:
1. 由于ArrayList保存的实际是object类型,因此所有的整数被装进去时,
都要先装箱,取出来时再拆箱。 效率上可想而知有多低
2. 没有了类型检查。任何对象都能放到这个集合中。

有点怀念C++中的模板,觉得C#中去除了模板是一处败笔,毕竟模板是基于
语言而不是基于平台的,加上了模板并不会影响.net平台的通用性,
不知大家有什么看法
...全文
65 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yarshray 2003-01-19
  • 打赏
  • 举报
回复
>>1. 由于ArrayList保存的实际是object类型,因此所有的整数被装进去时,
都要先装箱,取出来时再拆箱。 效率上可想而知有多低

我是这样理解的,因为C#中没有指针(unsafe除外).必须要用引用类型,所以
box和unbox是必然的

>> 2. 没有了类型检查。任何对象都能放到这个集合中。

这不就实现了类似与C++中template的功能(是功能上的,不是实质上的)



当然,下一个版本据说会加入模版.
runrunrun 2003-01-19
  • 打赏
  • 举报
回复
to windyyang(风萧萧) :
int[] a; 中的 a 能当集合类吗?
那我需要的两个集合操作 add(int) 和 bool find(int) 不知a 能否提供.

to ssdjmcj8048:
你指的是物理结构,而我需要的逻辑结构. 也许你还没有明白两者的区别.
在数据结构中,我们可以把一个逻辑上的链表存储在一个数组中,也可以把
一个逻辑上的数组放到一个物理上的链表中.

还是TheAres(班门斧)讲得中肯一点,也许我们只有等待以后的版本了.
ssdjmcj8048 2003-01-19
  • 打赏
  • 举报
回复
ArrayList:
[n个元素]->[n个元素]->[n个元素]->...
每[n个元素]是一个数组。但实际上整体是一个链表结构
Lostinet 2003-01-19
  • 打赏
  • 举报
回复
倒....ArrayList是链表?

ArrayList是IList的实现。用Array做前缀,就已经告诉我们它是用Array来储存元素的了。
..
windyyang 2003-01-19
  • 打赏
  • 举报
回复
见:
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemarrayclasstopic.htm
windyyang 2003-01-19
  • 打赏
  • 举报
回复
a其实就是使用类Array定义的
windyyang 2003-01-19
  • 打赏
  • 举报
回复
如果你要整形集合,可以这样定义:
int[] a;
a就可以当一个集合操作!
idiotzeng 2003-01-18
  • 打赏
  • 举报
回复
斑竹以前教鱼游泳的:)
ssdjmcj8048 2003-01-18
  • 打赏
  • 举报
回复
你要的集合类,在历史上就是不存在的,将来也是不会存在的(现有的编程结构)。
数据结构讲得很清楚,要么数组,要么链表,这是两个基本的数据存储方式,两个相矛盾的存储方式。
ArrayList实际上是一个链表,奇特的链表。ArrayList是这样工作的,初识哈是制定一个基本大小,默认是1000,也就说ArrayList是1000个位一组的链表而已。
runrunrun 2003-01-16
  • 打赏
  • 举报
回复
谢谢,我看看先
TheAres 2003-01-16
  • 打赏
  • 举报
回复
To 一条不会游泳の鱼:

很多集合类啊.
NET 框架在 System.Collections 命名空间中提供了若干集合类型的类。
ms-help://MS.VSCC/MS.MSDNVS.2052/Vbcon/html/vaconCreatingYourOwnCollectionClass.htm

你可以自己写一个,上面的连接中就有演示.

>>觉得C#中去除了模板是一处败笔
NET会在今后的版本中支持,看看这个
http://research.microsoft.com/projects/clrgen/

110,534

社区成员

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

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

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