您的位置:首页 > 其它

IEnumerable 和 IEnumerator 接口

2009-02-20 17:10 260 查看
实现IEnumerable接口的类,可以支持foreach循环遍历对象的集合元素

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();

        }

        #region IEnumerable Members

        public IEnumerator GetEnumerator()

        {

            // TODO:  Add StringCollection.GetEnumerator implementation

            return (IEnumerator)this;

        }

        #endregion

        #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

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: