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

前端技术 2023/09/07 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
   {
       return null;
   }
   else
   {
       return name[index];
   }
      }
  }
  public bool MoveNext()
  {
      ++index;  //每调用此方法就将索引往下+1
      if (index<name.Length)
      {
   return true;
      }
      else
      {
   return false;
      }
  }
  public void Reset()
  {
     index=-1;
  }
}

本文地址:https://www.stayed.cn/item/19212

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。