標籤:c# ienumerable與ienumerator ienumerable ienumerator
通過一個例子來看
-------------------------------------------------------Student.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;namespace ConsoleApplication6{ public class Student:IEnumerable { //數組 public string[] s; //索引器 public int i; public Student(string[] str)//建構函式,初始化數組 { s = str; } public IEnumerator GetEnumerator()//迭代器 { return s.GetEnumerator(); } }}
-------------------------------------------------------StiAll.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;namespace ConsoleApplication6{ public class StiAll:IEnumerator { //student對象 Student s; //遊標 int i = -1; public StiAll(Student ss)//建構函式,初始化student對象 { this.s = ss; } public object Current//擷取當前的項(唯讀屬性) { get { return s.s[i]; } } public bool MoveNext()//將遊標的位置向前移動 { if (i<s.s.Length-1)//如果在s數組的長度範圍之內就返回true { i++; return true; } else { return false; } } public void Reset()//初始化遊標 { i = -1; } }}
-------------------------------------------------------主程式
Student s = new Student(new string[] { "呂蒙", "周泰", "黃蓋" });//執行個體化Student對象 //第一種方式遍曆 foreach (var item in s) { Console.WriteLine(item);//輸出呂蒙,周泰,黃蓋 } //第二種方式遍曆 StiAll sa = new StiAll(s); while (sa.MoveNext()) { Console.WriteLine(sa.Current);//輸出呂蒙,周泰,黃蓋 } Console.ReadKey();
本文出自 “程式猿的家” 部落格,請務必保留此出處http://962410314.blog.51cto.com/7563109/1529891