源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-04-05 15:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#中foreach原理以及模拟的实现
本文实例讲述了C#中foreach原理以及模拟的实现方法,分享给大家供大家参考。具体如下:
[u]复制代码[/u] 代码如下:
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;   } }
在主方法里面:
[u]复制代码[/u] 代码如下:
class Program {         static void Main(string[] args)         {             Person p = new Person();             //for (int i = 0; i < p.Count; i++)             //{             //    Console.WriteLine(p[i]);             //}             foreach (string item in p)             {                 Console.WriteLine(item);             }             //实际执行foreach就相当于执行下面几句话:             Console.WriteLine("==================================================");             IEnumerator p1 = p.GetEnumerator();             while (p1.MoveNext())             {                 string str=(string)p1.Current;                 Console.WriteLine(str);             }             Console.ReadKey();         } }
希望本文所述对大家的C#程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部