使用IEnumerable接口遍歷數據,這在項目中會常常的用到,這個類型呢主要是一個枚舉器。數組
1.首先須要讓該類型實現一個名字叫IEnumerable的接口,實現該接口的主要目的是爲了讓當前類型中增長一個名字叫GetEnumerator()的方法。this
public class Person : IEnumerable { private string[] Friends = new string[] { "張三", "李四", "王五", "趙六" }; public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } #region IEnumerable 成員 //這個方法的做用就是返回一個「枚舉器」 public IEnumerator GetEnumerator() { return new PersonEnumerator(this.Friends); } #endregion }
2.但願一個類型被枚舉遍歷,就是要實現一個枚舉器方法spa
public class PersonEnumerator : IEnumerator { public PersonEnumerator(string[] fs) { _friends = fs; } private string[] _friends; //通常下標都是一開始指向了第一條的前一條。第一條是0 private int index = -1; #region IEnumerator 成員 public object Current { get { if (index >= 0 && index < _friends.Length) //下標有範圍 { return _friends[index]; } else { throw new IndexOutOfRangeException(); } } } public bool MoveNext() { if (index + 1 < _friends.Length) //下標有範圍 { index++; return true; } return false; } public void Reset() { index = -1; } #endregion }
3.而後進行遍歷,這裏呢能夠調用本身封裝的MoveNext方法去找數組元素code
Person p = new Person(); IEnumerator etor = p.GetEnumerator(); while (etor.MoveNext()) { Console.WriteLine(etor.Current.ToString()); }
也能夠直接使用foreach,並且主要是由於是枚舉元素,相似與數組,list等等之類的,均可以使用Lambda表達式來進行數據的處理blog
Person p = new Person(); foreach (string item in p) { Console.WriteLine(item); } Console.WriteLine("ok");
4.輸出的結果以下:接口