自定义集合类实现接口IEnumrable和IEnumrator,遍历/迭代自定义集合对象

先来说说IEnumrable和IEnumrator接口,IEnumrable接口成员如下:
    public interface IEnumerable
    {
        IEnumerator GetEnumerator();
    }
IEnumrable是可枚举类型,什么是可枚举类型呢?简单说,就是实现了IEnumrable接口的类型,所有能用foreach循环的类型都是可枚举类型。

可迭代类型,迭代即遍历,可迭代,即可遍历,所以只要一个类型实现了IEnumrable接口,就可以进行对它进行迭代(遍历)。
这个接口只有一个成员GetEnumerator()方法,返回一个IEnumrator接口对象,我们再看看IEnumrator的接口定义:
    public interface IEnumerator
    {
        object Current { get; }
        bool MoveNext();
        void Reset();
    }

IEnumrator枚举器,只有三个成员:只读属性Current,方法Move(),方法Reset()。
Reset()方法将集合游标复位至-1位置,为下一次向前遍历整个集合做准备;
Current只读属性,获取当前游标所在位置的集合元素;
MoveNext()方法,将游标移至下一个集合元素位置,为获取新元素做准备;

如上,IEnumrable接口唯一需要实现的是方法GetEnumerator,该方法返回值是IEnumrator接口类型,接口和类一样,都是引用类型,GetEnumrator方法返回类型是IEnumrator接口,可以返回IEnumrator接口的实现,即继承IEnumrator接口的类,所以这边只要返回一个实现了IEnumrator接口的类的对象就可以了,也就是说返回的类中要实现IEnumrator接口的三个成员:属性Current,方法Move(),方法Reset().(24-04-23)

一般来说有两种方式实现集合类的IEnumrable和IEnumrator接口成员,从而实现对集合类的元素遍历。
第一种,按照.Net集合类的接口实现方式,集合类继承IEnumrable接口并实现GetEnumrator()方法,方法内返回IEnumrator对象,然后创建一个类Enumrator_People,继承IEnumrator接口,实现该接口的三个成员.如下demo:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Forms;

namespace 自定义集合类
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //People是自定义的集合类型,创建一个集合对象peo,然后将集合元素逐一添加进来,再进行peo集合遍历集合中的元素!

            //通过合类的无参构造函数,创建一个空集合对象peo
            People peo = new People();
            //通过Add方法添加集合元素
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值