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

首頁 > 編程 > C# > 正文

C#中foreach原理以及模擬的實現

2020-01-24 02:20:56
字體:
來源:轉載
供稿:網友

本文實例講述了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;
  }
}

在主方法里面:

復制代碼 代碼如下:
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#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼木县| 黄梅县| 新龙县| 绩溪县| 大竹县| 拜泉县| 富蕴县| 鞍山市| 桑日县| 孟村| 杨浦区| 准格尔旗| 常州市| 伽师县| 横山县| 平南县| 临泉县| 佛坪县| 巴林右旗| 怀集县| 怀仁县| 城口县| 军事| 偃师市| 车致| 通州区| 特克斯县| 二连浩特市| 合山市| 海淀区| 酒泉市| 香格里拉县| 托克托县| 侯马市| 五原县| 泰顺县| 外汇| 铜陵市| 马公市| 黎城县| 镇江市|