• IEnumerable 接口 实现foreach


    using System;
    using System.Collections;

    public class Person
    {
        public Person(string fName, string lName)
        {
            this.firstName = fName;
            this.lastName = lName;
        }

        public string firstName;
        public string lastName;
    }

    public class People : IEnumerable
    {
        private Person[] _people;
        public People(Person[] pArray)
        {
            _people = new Person[pArray.Length];

            for (int i = 0; i < pArray.Length; i++)
            {
                _people[i] = pArray[i];
            }
        }

            IEnumerator IEnumerable.GetEnumerator()
            {
                return new PeopleEnum(_people);
            }
    }

    public class PeopleEnum : IEnumerator
    {
        public Person[] _people;

        // Enumerators are positioned before the first element
        // until the first MoveNext() call.
        int position = -1;

        public PeopleEnum(Person[] list)
        {
            _people = list;
        }

        public bool MoveNext()
        {
            position++;
            return (position < _people.Length);
        }

        public void Reset()
        {
            position = -1;
        }

        public object Current
        {
            get
            {
                try
                {
                    return _people[position];
                }
                catch (IndexOutOfRangeException)
                {
                    throw new InvalidOperationException();
                }
            }
        }
    }

    class App
    {
        static void Main()
        {
            Person[] peopleArray = new Person[3]
            {
                new Person("John", "Smith"),
                new Person("Jim", "Johnson"),
                new Person("Sue", "Rabon"),
            };

            People peopleList = new People(peopleArray);
            foreach (Person p in peopleList)
                Console.WriteLine(p.firstName + " " + p.lastName);

        }
    }

    /* This code produces output similar to the following:
    *
    * John Smith
    * Jim Johnson
    * Sue Rabon
    *
    */

  • 相关阅读:
    文件上传笔记
    使用customize-cra,react-app-rewired扩展create-react-app
    regeneratorRuntime is not defined报错处理
    gulp使用笔记
    pyinstaller打包带图标时报错问题
    不使用npm eject 修改create-react-app的wepack配置less-loader
    mockjs使用笔记
    树莓派安装TPLINK_WN725n v2网卡驱动
    csv数据文件如何设置
    Jmeter多线程token传递
  • 原文地址:https://www.cnblogs.com/greencolor/p/1710099.html
Copyright © 2020-2023  润新知