随笔-6  评论-5  文章-23  trackbacks-0

申明:本文转载自Bear-Study-Hard

数组最大的限制就是一旦创建好数组,它们的大小就是固定的,不能在现有的数组末尾添加新项目,除非创建一个新的数组。

C#中的数组是作为System.Array类的实例来执行的,它们只是集合类中的一种。集合类一般用于处理对象列表,其功能要比简单数组要多,这些功能是通过执行System.Collections名称空间中的接口而实现的,因此集合的语法已经标准化了。

在System.Collections名称空间中有许多接口都提供了基本的集合功能:

1.IEnumerable提供了循环集合中项目的功能。

2.ICollection(继承于IEnumerable)可以获取集合中项目的个数,并能把项目复制到一个简单的数组类型中。

3.IList(继承于IEnumerable和ICollection)提供了集合的项目列表,并可以访问这些项目,以及其他一些与项目列表相关的功能。

4.IDictionary(继承于IEnumerable和ICollection)类似于IList,但提供了可通过键码值而不是索引访问的项目列表。

System.Array类继承了IList,ICollection和IEnumerable,但不支持IList的一些更高级的功能,表示大小固定的一个项目列表。

System.Collections.ArrayList也执行IList,ICollection和IEnumerable接口,但执行的方式比System.Array更复杂。数组的大小是固定的(不能增加或删除元素),而这个类可以用于表示大小可变的项目列表。

可以从一个类派生自己的集合System.Collections.CollectionBase(强类型集合),CollectionBase提供了两个受保护的属性,它们可以访问存储的对象本身。List可以通过IList接口访问项目,InnerList则是用于存储项目的ArrayList对象。

在为一个集合类添加索引后,因为IList.List属性返回一个System.Object对象,所以在返回时需要进行显式数据类型转换。

    public class Animals : CollectionBase
    {
        public Animal this[int animalIndex]
        {
            get{return (Animal)List[animalIndex];}
            set{List[animalIndex] = value;}
        }
    }

这样我们就为这个索引符定义了一个类型,使用该索引符访问一个项目时,就可以得到这个类型:

animalCollection[0].Feed();

而不需要读取出项目后在进行相应的类型转换:((Animal)animalCollection[0]).Feed();

posted on 2008-04-07 15:13 二把刀 阅读(16) 评论(0)  编辑 收藏 网摘 所属分类: C#学习笔记

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-04-07 15:15 编辑过
Google站内搜索

相关文章:

相关链接: