实现IEnumerable接口的类,可以支持foreach循环遍历对象的集合元素
IEnumerable:
IEnumerator:
IEnumerable:
IEnumerator GetEnumerator() | 返回可循环访问集合的枚举数。 |
IEnumerator:
object Current | 获取集合中的当前元素。 |
bool MoveNext() | 将枚举数推进到集合的下一个元素。 如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false。 |
void Reset() | 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。 |
sample:
- using System;
- using System.Collections;
- namespace ConsoleApplication1
- {
- /**//// <summary>
- /// Summary description for Class1.
- /// </summary>
- class Class1
- {
- /**//// <summary>
- /// The main entry point for the application.
- /// </summary>
- [STAThread]
- static void Main(string[] args)
- {
- CStringEnum se = new CStringEnum();
- foreach (string s in se)
- {
- Console.WriteLine(s);
- }
- Console.Read() ;
- }
- }
- class CStringEnum : IEnumerable, IEnumerator
- {
- string[] items = new string[16];
- int index = -1;
- public CStringEnum()
- {
- for(int i=0; i<items.Length; ++i)
- items[i] = "s" + i.ToString();
- }
- IEnumerable Members#region IEnumerable Members
- public IEnumerator GetEnumerator()
- {
- // TODO: Add StringCollection.GetEnumerator implementation
- return (IEnumerator)this;
- }
- #endregion
- IEnumerator Members#region IEnumerator Members
- public void Reset()
- {
- // TODO: Add CStringEnum.Reset implementation
- index = -1;
- }
- public object Current
- {
- get
- {
- // TODO: Add CStringEnum.Current getter implementation
- return items[index];
- }
- }
- public bool MoveNext()
- {
- // TODO: Add CStringEnum.MoveNext implementation
- index++;
- return index >= items.Length ? false : true;
- }
- #endregion
- }
- }