程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#迭代器形式(Iterator Pattern)實例教程

C#迭代器形式(Iterator Pattern)實例教程

編輯:C#入門知識

C#迭代器形式(Iterator Pattern)實例教程。本站提示廣大學習愛好者:(C#迭代器形式(Iterator Pattern)實例教程)文章只能為提供參考,不一定能成為您想要的結果。以下是C#迭代器形式(Iterator Pattern)實例教程正文


本文以實例情勢簡略簡述了C#迭代器形式的完成辦法,分享給年夜家供年夜家參考。詳細辦法以下:

普通來講,迭代器形式的需求來自:須要對一些聚集停止迭代,而迭代的方法能夠有許多種。

說到迭代,舉措年夜致包含設置第一個地位,獲得下一個地位元素,斷定能否迭代停止,獲得以後地位元素,年夜致就這麼些。把這些迭代舉措封裝到一個接口中。

public interface IIterator
{
    void First();
    string Next();
    bool IsDone();
    string Current();
}

在實際場景中,迭代的方法能夠有許多種,先完成一種迭代方法,完成IIterator接口。

public class IWannaIterate : IIterator
{
    private List<string> _list;
    private int position;
    public IWannaIterate(List<string> list)
    {
      Console.WriteLine("我要感激IIterator,有了它我才可以迭代");
      _list = list;
      position = 0;
    }
    public void First()
    {
      position = 0;
    }
    public string Next()
    {
      return _list[position++];
    }
    public bool IsDone()
    {
      return position >= _list.Count;
    }
    public string Current()
    {
      return _list[position];
    }
}

以上,迭代器IWannaIterate類外部保護這一個聚集,而這個聚集是經由過程結構函數賦值的,不然的話,迭代器就沒活干了。 

好了,迭代器,迭代的詳細方法有了,迭代器給誰用呢?

只需一個類保護著聚集,便可能用到以上完成IIterator接口的某種詳細迭代器。一切須要迭代器的類都有一個配合的舉措,就是創立一個迭代器。先把創立迭代器的舉措籠統成接口。

public interface IManagement
{
    IIterator CreateIterator();
}

假定有一個治理用戶聚集的類,應用以上的IWannaIterate迭代器。

public class MyUserManagement : IManagement
{
    private List<string> _users;
    public MyUserManagement()
    {
      _users = new List<string>();
      _users.Add("hello");
      _users.Add("world");
      _users.Add("nice");
    }
    public IIterator CreateIterator()
    {
      return new IWannaIterate(_users);
    }
}

假定有一個治理Book聚集的類,也應用以上的IWannaIterate迭代器。

public class MyBookManagement : IManagement
{
    private List<string> _books;
    public MyBookManagement()
    {
      _books = new List<string>();
      _books.Add("俏麗世界");
      _books.Add("你好嗎");
    }
    public IIterator CreateIterator()
    {
      return new IWannaIterate(_books);
    }
}

客戶端讓MyUserManagement和MyBookManagement創立各自的迭代器,然後應用迭代器把聚集的一切元素打印出來。

class Program
{
    static void Main(string[] args)
    {
      IManagement magageA = new MyUserManagement();
      IManagement manageB = new MyBookManagement();
      IIterator iteratorA = magageA.CreateIterator();
      IIterator iteratorB = manageB.CreateIterator();
      Console.WriteLine("打印出的user列表");
      PrintList(iteratorA);
      Console.WriteLine();
      Console.WriteLine("打印出book列表");
      PrintList(iteratorB);
      Console.ReadKey();
    }
    private static void PrintList(IIterator iterator)
    {
      while (!iterator.IsDone())
      {
        Console.WriteLine(iterator.Next());
      }
    }
}

運轉成果以下圖所示:

願望本文所述對年夜家的C#法式設計有所贊助。

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