国产探花免费观看_亚洲丰满少妇自慰呻吟_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#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈溪市| 吉木乃县| 拉萨市| 巴南区| 拉孜县| 高安市| 章丘市| 武宣县| 霍州市| 鹤岗市| 鄂尔多斯市| 阳曲县| 宁蒗| 定襄县| 永德县| 衡东县| 平潭县| 盘山县| 英德市| 突泉县| 蓬安县| 克什克腾旗| 自治县| 孟津县| 盈江县| 澄城县| 张掖市| 彰化市| 长宁区| 通化县| 皋兰县| 雅安市| 枣庄市| 孟连| 稷山县| 阳江市| 宜阳县| 日照市| 绍兴县| 无为县| 景德镇市|