c#集合的学习

     c#中的数组实现为System.Array类的实例,他们只是集合类中的一种,集合类一般用于处理对象列表,其功能比简单数组要多,这些功能是通过实现System.Collections命名空间中的接口而获得的,因此集合的语法已经标准化了。集合的功能可以通过接口来实现,该接口不仅没有限制我们使用基本集合类,反而我们还可以创建自己的定制集合类,这些集合可以专用于要枚举的对象,这么做的一个优点是定制的集合类可以是强类型化的,也就是说,从集合中提取项时,不需要把他们转换为正确的类型(即不需要转换类型),另一个优点是提供专门的的方法来对集合对象进行操作。

   对于上面一段话,我们可以得知如下几点:

      1.集合是通过接口来实现的。

      2.集合有现成的集合类使用,例如:ArrayList,CollectionBase,Hashtable等。

      3.我们可以定制集合,但是要实现一些接口方法。

      4.集合添加成员和提取成员是不需要进行类型转换的,所以是强类型的。

  既然集合可以自定义,我们如何来自定义自己的集合呢?自定义自己的集合我们必须要弄懂索引器,迭代器。

  何谓索引器,索引器就是带有参数的属性。如何构建索引器,往往是先构造一个集合的成员类,然后针对该成员构造一个索引器。如下代码所示:

  上面介绍了何为索引器,那么何谓迭代器呢?大家在使用数组的时候,枚举数据成员时候经常会用到foreach关键字,大家往往直接调用foreach枚举数组成员,但是知道其工作原理吗?在c#中,若是要枚举一个集合的成员,必须实现IEnumerable接口的GetEnumerator()方法,返回一个IEnumerator类型数据。然后实现IEnumerator的Movenext()和Reset()方法,Count属性。我们要是按照这个步骤来实现foreach循环肯定是一个繁琐的工作,于是c#给我们提供了迭代器来简化我们的工作。迭代器本质上就是实现GetEnumerator()方法,不过在实现代码中,用yield关键来返回一个IEnumerator类型数据,省去了我们实现IEnumerator成员工作。代码如下:

 

   我们不仅仅可以对类进行迭代,还可以对类成员进行迭代,我们可以把类成员声明为IEnumerable类型,对类成员进行迭代。

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值