标题:关于C#枚举数的问题
取消只看楼主
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
结帖率:100%
已结贴  问题点数:10 回复次数:0 
关于C#枚举数的问题
程序代码:
class ColorEnumerator : IEnumerator//定义的枚举类
        {
            string[] Colors;
            int Position = -1;
            public ColorEnumerator(string[] theColors)
            {
                Colors = new string[theColors.Length];
                for (int i = 0; i < theColors.Length;i++ )
                {
                    Colors[i] = theColors[i];
                }
            }
            public object Current
            {
                get
                {
                    if (Position==-1)
                    {
                        throw new InvalidOperationException();
                    }
                    if (Position==Colors.Length)
                    {
                        throw new InvalidOperationException();
                    }
                    return Colors[Position];
                }

            }
            public bool MoveNext()
            {
                if (Position < Colors.Length - 1)
                {
                    Position++;
                    return true;
                }
                else
                    return false;
            }
            public void Reset()
            {
                Position = -1;
            }
        }
        class MyColors : IEnumerable
        {
            string[] Colors = { "red", "yellow", "blue" };
            public IEnumerator GetEnumerator()
            {
                return new ColorEnumerator(Colors);
            }
        }

 static void Main(string[] args)
        {
            {
                MyColors my = new MyColors();
                foreach (string color in my)//在这里,使用foreach为什么会调用MyColors类中的GetEnumerator方法啊?而进入ColorEnumerator类中方法的调用顺序又是怎么一回事啊?
                {
                    Console.WriteLine(color);
                }
                Console.ReadKey();
              }              
         } 
另外C#中要实现枚举数则IEnumerable和IEnumerator是不是要成对出现?枚举数的实现是不是依赖于这两个接口啊?
2013-04-07 23:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403276-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.131171 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved