C#中foreach原理以及模拟的实现
本文实例讲述了C#中foreach原理以及模拟的实现方法,分享给大家供大家参考。具体如下:
publicclassPerson:IEnumerable //定义一个person类 并且实现IEnumerable接口 (或者不用实现此接口直接在类//里面写个GetEnumerator()方法) { string[]names={"小杨","科比布莱恩特","凯文杜兰特","卡门安东尼"};//在Person类里面定义一个字符串数组,以便用来模仿对象的索引访问
publicintCount{get{returnnames.Length;}} //可以通过对象访问此属性 publicstringthis[intindex] //定义一个索引器 { get{returnnames[index];} }
publicIEnumeratorGetEnumerator() { returnnewMyClass(names); //实际上通过此方法就是返回一个可以实现循环的类的对象 //用他的对象来移动索引 } }
publicclassMyClass:IEnumerator { publicMyClass(string[]names)//一个参数的构造函数,用来和要遍历的类的进行关联 { name=names; } privatestring[]name; //用此字段来存放接收过来的数组 intindex=-1; publicobjectCurrent //获取当前索引的元素的值 { get { if(index<0) //准备状态是-1,开始循环了在MoveNext中加1 { returnnull; } else { returnname[index]; } } } publicboolMoveNext() { ++index; //每调用此方法就将索引往下+1 if(index<name.Length) { returntrue; } else { returnfalse; } } publicvoidReset() { index=-1; } }