请大家看看下面几个问题,能解决的给解决的一下,多谢了!^_^   C#中的集合有:数组,ArrayList,实现了IEnumerable、ICollection和IEnumerator接口的集合类,Stack和Queqe,SortedList,Hashtable:
1、ArrayList中的元素是有序还是无序的?因为看到ArrayList有几个方法涉及到索引,所以应该是有序的把?如果是有序的,那么元素的引用空间在内存中是不是连续分配的?
2、如果现有一个实体类AEntity,想用IEnumerable、ICollection和IEnumerator实现它的一个集合,继承这些接口的类结构体系该如何写?另,如果一个集合继承了这些接口,那么这个集合有什么特征和好处?这个集合是有序还是无序的?
3、foreach是不是只是遍历集合,而不管集合的有序还是无序?foreach对数组,ArrayList,实现了IEnumerable、ICollection和IEnumerator接口的集合类,SortedList都适用吧?
4、Stack和Queqe的内存是分配在托管堆上还是堆栈上?它们各自的内存分配是如何保证先进后出和先进先出的?
5、SortedList的内存分配是什么样的?它到底是线性集合还是平面集合?为什么它兼有ArrayList和Hashtable两种功能?

解决方案 »

  1.   

    有序,不是整体连续,是部分连续的.ArrayList以某一特定长度申请空间,这个长度不是某个元素的长度.3 foreach也是有序的,是按照索引从小到达访问的. 都使用.
      

  2.   

    ArrayList加入元素时,有计数标记的,可做为索引值,其它集合类也都是这样的,很好用foreach遍历,可以在C#2.0中结合迭代器一起使用,它遍历的方式受迭代返回顺序的控制。
      

  3.   

    1. 你怎么定义“有序”?ArrayList维持你把对象放进去的顺序。这些对象在内存中占用空间不连续。2. 在.NET 1.1,如果AEntity是集合容器,那么它需要实现IEnumerable。GetEnuermator方法返回一个IEnumerator地实现(这个也要自己写),有很多代码生成工具支持这个。3. foreach需要集合支持IEnumerable接口,没有别的要求。4. 这里的Stack和Queue只是对象容器,和操作系统的堆和栈没有关系。都是在托管堆分配,只是内部对象的排列符合堆和栈的定义。5. SortedList内部保存了两个ArrayList,一个是排序的,一个是自然顺序。所以可以支持ArrayList和Hashtable操作。而事实上SortedList和Hashtable操作的复杂度完全不同:SortedList的插入和删除要比Hashtable慢,因为需要额外的排序;查找复杂度也不同,Hashtable通常更好一些。
      

  4.   

    sunrobust(咸鱼---翻身理想不灭)和ProjectDD() ,真对不起,我操作失误,没有给你们俩加上分,实在抱歉!! 十分感谢你俩的回复!!