C#中foreach原理以及模拟的实现

2019-12-26 12:29:55丽君
易采站长站为您分析C#中foreach原理以及模拟的实现方法,备有详尽的注释,便于深入理解C#原理,需要的朋友可以参考下    

本文实例讲述了C#中foreach原理以及模拟的实现方法,。具体如下:

 

复制代码 public class Person:IEnumerable     //定义一个person类  并且 实现IEnumerable 接口  (或者不用实现此接口 直接在类 //里面写个GetEnumerator()方法)
{
        string[] names = { "小杨", "科比布莱恩特", "凯文杜兰特", "卡门安东尼" }; //在Person类里面定义一个字符串数组,以便用来模仿对象的索引访问

 

        public int Count { get { return names.Length; } }    //可以通过对象访问此属性
     
        public string this[int index]    //定义一个索引器
        {
            get { return names[index]; }
        }


        public IEnumerator GetEnumerator()
        {
            return new MyClass(names);             //实际上通过此方法就是返回一个可以实现循环的类的对象 
                                                   // 用他的对象来移动索引
        }
}

public class MyClass :IEnumerator
{
  public MyClass(string[] names) //一个参数的构造函数,用来和要遍历的类的进行关联
  {
      name = names;
  }
  private string[] name;  //用此字段来存放接收过来的数组
  int index = -1;
  public object Current   //获取当前索引的元素的值
  {
      get 
      {
   if (index<0)    //准备状态是-1,开始循环了在MoveNext中加1