zoukankan      html  css  js  c++  java
  • IENumerable_Test

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace IENumerable_Test
    {
    
        public class Person
        {
            public string firstName;
            public string lastName;
    
            public Person(string fName, string lName)
            {
                this.firstName = fName;
                this.lastName = lName;
            }
        }
    
        public class People : IEnumerable
        {
            private Person[] _people;
    
            public People(Person[] pArray)
            {
                this._people = pArray;
                //_people = new Person[pArray.Length];
    
                //for (int i = 0; i < pArray.Length; i++)
                //{
                //    _people[i] = pArray[i];
                //}
            }
    
            // Implementation for the GetEnumerator method.
            IEnumerator IEnumerable.GetEnumerator()
            {
                return (IEnumerator)GetEnumerator();
            }
            //IEnumerator IEnumerable.GetEnumerator()
            //      {
            //          throw new NotImplementedException();
            //      }
    
            public PeopleEnum 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)
            {
                this._people = list;
            }
    
            public bool MoveNext()
            {
                position++;
                return (position < _people.Length);
            }
    
            public void Reset()
            {
                position = -1;
            }
    
            object IEnumerator.Current
            {
                get
                {
                    return Current;
                }
            }
    
            public Person Current
            {
                get
                {
                    try
                    {
                        return _people[position];
                    }
                    catch (IndexOutOfRangeException)
                    {
                        throw new InvalidOperationException();
                    }
                }
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Person[] peopleArray = { 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);
                Console.ReadKey();
            }
        }
    }
    

      

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("*********Fun with IEnumberable/IEnumerator************
    ");
                Garage carLot = new Garage();
    
                //交出集合中的每一Car对象吗  
                foreach (Car c in carLot)
                {
                    Console.WriteLine("{0} is going {1} MPH", c.Name, c.Speed);
                }
    
                Console.WriteLine("GetEnumerator被定义为公开的,对象用户可以与IEnumerator类型交互,下面的结果与上面是一致的");
    
                IEnumerator i = carLot.GetEnumerator();
                while(i.MoveNext())
                {
                    //i.current返回值类型是object的
                    Car myCar = (Car)i.Current;
                    Console.WriteLine("{0} is going {1} MPH", myCar.Name, myCar.Speed);
                }
    
    
                Console.ReadLine();
            }
        }
    
        public class Garage : IEnumerable
        {
            Car[] carArray = new Car[4];  //在Garage中定义一个Car类型的数组carArray,其实carArray在这里的本质是一个数组字段  
    
            //启动时填充一些Car对象  
            public Garage()
            {
                //为数组字段赋值  
                carArray[0] = new Car("Rusty", 30);
                carArray[1] = new Car("Clunker", 50);
                carArray[2] = new Car("Zippy", 30);
                carArray[3] = new Car("Fred", 45);
            }
    
            public IEnumerator GetEnumerator()
            {
                //递归调用
                return this.carArray.GetEnumerator();
            }
    
    
        }
    
        public class Car
        {
            public string Name { get; set; }
            public int Speed { get; set; }
    
            public Car(string name, int speed)
            {
                this.Name = name;
                this.Speed = speed;
            }
        }
    }
    

      

  • 相关阅读:
    LASSO回归原理和Python代码 | 线性回归 | 交叉验证
    初探投行 | 金融
    癌症疫苗 | Cancer Vaccines
    文献复现 | Machine Learning on Human Muscle Transcriptomic Data for Biomarker Discovery and TissueSpecific Drug Target Identification
    癌症研究必备基础知识 | 生信
    初探RNA | RNA分类 | miRNA | lncRNA
    PubMed文献数据挖掘
    罕见病 | 国内 | 国外 | 市场状态
    医保目录谈判 | 国家带量采购 | DRG/DIP支付方式改革 | 腾笼换鸟
    TCGA数据挖掘基本教程
  • 原文地址:https://www.cnblogs.com/Jeely/p/11004510.html
Copyright © 2011-2022 走看看