程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#2.0中使用yield關鍵字簡化枚舉器的實現

C#2.0中使用yield關鍵字簡化枚舉器的實現

編輯:C#入門知識

我們知道要使用foreach語句從客戶端代碼中調用迭代器,必需實現IEnumerable接口來公開枚舉器,IEnumerable是用來公開枚舉器的,它並不實現枚舉器,要實現枚舉器必需實現IEnumerator接口。現在用 yield關鍵字,您不必實現整個 IEnumerator 接口。從而簡化了代碼. 而且可以實現更加靈活的枚舉。

如下代碼:
 1// Declare the collection:
 2public class SampleCollection
 3{
 4    public int[] items;
 5
 6    public SampleCollection()
 7    {
 8        items = new int[5] { 5, 4, 7, 9, 3 };
 9    }
10
11    public System.Collections.IEnumerable BuildCollection()
12    {
13        for (int i = 0; i < items.Length; i++)
14        {
15            yield return items[i];
16        }
17    }
18}
19
20class MainClass
21{
22    static void Main()
23    {
24        SampleCollection col = new SampleCollection();
25
26        // Display the collection items:
27        System.Console.WriteLine("Values in the collection are:");
28        foreach (int i in col.BuildCollection())
29        {
30            System.Console.Write(i + " ");
31        }
32    }
33}
34
或者

 

Code
 1class Program
 2    {
 3        static void Main(string[] args)
 4        {
 5            SampleCollection s = new SampleCollection();
 6           
 7            foreach(int i in s)
 8            {
 9                Console.WriteLine(i.ToString());
10            }
11        }
12    }
13
14    public class SampleCollection:IEnumerable
15    {
16        public int[] items;
17
18        public SampleCollection()
19        {
20            items = new int[5] { 5, 4, 7, 9, 3 };
21        }
22
23        public IEnumerator GetEnumerator()
24        {
25            for (int i = 0; i < items.Length; i++)
26            {
27                yield return items[i];
28            }
29        }
30    }
我們在注意的是C#2.0增加了yield關鍵字,簡化了對枚舉器的實現。但他只不過是在編譯器上的改變,實際上是由編譯器幫我們實現了IEnumerator接口的枚舉器.

    

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