国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中foreach原理以及模擬的實現(xiàn)

2019-10-29 21:42:37
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C#中foreach原理以及模擬的實現(xiàn)方法,備有詳盡的注釋,便于深入理解C#原理,需要的朋友可以參考下
 

本文實例講述了C#中foreach原理以及模擬的實現(xiàn)方法,分享給大家供大家參考。具體如下:

 

復(fù)制代碼代碼如下:
public class Person:IEnumerable     //定義一個person類  并且 實現(xiàn)IEnumerable 接口  (或者不用實現(xiàn)此接口 直接在類 //里面寫個GetEnumerator()方法)
{
        string[] names = { "小楊", "科比布萊恩特", "凱文杜蘭特", "卡門安東尼" }; //在Person類里面定義一個字符串?dāng)?shù)組,以便用來模仿對象的索引訪問

 

        public int Count { get { return names.Length; } }    //可以通過對象訪問此屬性
     
        public string this[int index]    //定義一個索引器
        {
            get { return names[index]; }
        }


        public IEnumerator GetEnumerator()
        {
            return new MyClass(names);             //實際上通過此方法就是返回一個可以實現(xiàn)循環(huán)的類的對象 
                                                   // 用他的對象來移動索引
        }
}

public class MyClass :IEnumerator
{
  public MyClass(string[] names) //一個參數(shù)的構(gòu)造函數(shù),用來和要遍歷的類的進(jìn)行關(guān)聯(lián)
  {
      name = names;
  }
  private string[] name;  //用此字段來存放接收過來的數(shù)組
  int index = -1;
  public object Current   //獲取當(dāng)前索引的元素的值
  {
      get 
      {
   if (index<0)    //準(zhǔn)備狀態(tài)是-1,開始循環(huán)了在MoveNext中加1
   {
       return null;
   }
   else
   {
       return name[index];
   }
      }
  }
  public bool MoveNext()
  {
      ++index;  //每調(diào)用此方法就將索引往下+1
      if (index<name.Length)
      {
   return true;
      }
      else
      {
   return false;
      }
  }
  public void Reset()
  {
     index=-1;
  }
}

 

在主方法里面:

 

復(fù)制代碼代碼如下:
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);
            }
            //實際執(zhí)行foreach就相當(dāng)于執(zhí)行下面幾句話:
            Console.WriteLine("==================================================");
            IEnumerator p1 = p.GetEnumerator();
            while (p1.MoveNext())
            {
                string str=(string)p1.Current;
                Console.WriteLine(str);
            }
            Console.ReadKey();
        }
}

 

希望本文所述對大家的C#程序設(shè)計有所幫助。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安义县| 民乐县| 渑池县| 临潭县| 根河市| 前郭尔| 长沙市| 柘荣县| 鄂伦春自治旗| 襄汾县| 赤壁市| 西贡区| 二连浩特市| 故城县| 罗田县| 曲周县| 威海市| 扶沟县| 金华市| 平阴县| 清河县| 金平| 罗田县| 德江县| 吉林省| 鄢陵县| 广西| 汽车| 南宫市| 通州区| 禄丰县| 兴仁县| 武汉市| 双辽市| 台南县| 漳浦县| 平利县| 嘉善县| 治县。| 蒙城县| 蒙城县|