程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#3.0學習筆記(11)枚舉數和foreach語句實現原理

C#3.0學習筆記(11)枚舉數和foreach語句實現原理

編輯:C#入門知識

 

1, 可枚舉類型和枚舉數?

       可枚舉類型:實現了GetEnumerator方法的類型,並且它返回用於項的枚舉數。

       枚舉數:枚舉數是可以依次返回集合中項的類對象。一般是可枚舉類型對象調用GetEnumerator方法來獲取枚舉數對象。

       下圖解釋了可枚舉類型和枚舉數之間的關系:

      

 

 

\

 

2, foreach語句實現原理?

       foreach語句是被設計用來和可枚舉類型一起使用。只要它的遍歷對象是可枚舉類型。

       比如數組,它就會執行以下動作來實現遍歷輸出。

  1>    通過調用GetEnumerator方法獲取對象的枚舉數。

  2>    從枚舉數中請求每一項並且把它作為迭代變量,代碼可以讀但不可以改。

  例如:

 

//方法一:使用IEnumerator接口的MoveNext方法和Current屬性來模仿foreach循環遍歷數組效果。

 

  class Program

 

    {

 

        static voidMain(string[] args)

 

        {

 

            int[] arr = { 1,2,3,4,5}; //聲明並初始化數組。

 

            IEnumerator ie = arr.GetEnumerator(); //調用可枚舉類型的GetEnumerator方法獲得枚舉數對象。

 

            while (ie.MoveNext()) //調用IEnumerator接口的MoveNext方法移到下一項。實現遍歷數組。

 

            {

 

                int i = (int)ie.Current; //調用IEnumerator接口的Current方法獲取當前項。注意它返回的是object類型,需要強制轉換類型。

 

                Console.WriteLine("{0}",i);

 

            }

 

            Console.ReadKey();

 

        }

 

   }

 

  程序輸出結果為:

  \

     //方法二:使用foreach來遍歷數組:

	class Program

 

    {

 

        static voidMain(string[] args)

 

        {

 

            int[] arr = { 1, 2, 3, 4, 5 }; //聲明並初始化數組。

 

            foreach (int item in arr) //使用foreach語句遍歷數組。

 

            {

 

                Console.WriteLine("{0}",item);

 

            }

 

            Console.ReadKey();

 

        }

 

    }

 

 

   程序輸出結果與上面一樣

 


作者 永遠的麥子

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved