迭代器的疑惑

Posted tim-zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器的疑惑相关的知识,希望对你有一定的参考价值。

 public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            Family f = new Family();
            foreach (var item in f)
            {
                richTextBox1.Text += item + "
";
            }
            //Test f = new Test();
            //foreach (var item in f.GetEnumerator())
            //{
            //    richTextBox1.Text += item + "
";
            //}
        }
    }
    public class Family : IEnumerable
    {
        string[] MyFamily = { "父亲", "母亲", "弟弟", "妹妹" };
        string[] MyFamily1 = { "1", "2", "3", "4" };
        public IEnumerator GetEnumerator()
        {
            for (int i = 0; i < MyFamily.Length; i++)
            {
                yield return MyFamily[i];
            }
        }

        public IEnumerator GetEnumerator(int a)
        {
            for (int i = 0; i < MyFamily1.Length; i++)
            {
                yield return MyFamily1[i];
            }
        }
    }

    public class Test
    {
        string[] MyFamily = { "父亲", "母亲", "弟弟", "妹妹" };
        public string[] GetEnumerator()
        {
            return MyFamily;
        }
    }
}

上面的代码会输出家庭成员在一个富文本框

我用Test方法也能实现,为啥要用迭代器,暂时还没想到哪里需要用到这个技术,可能以后就明白了。

提醒自己需要注意的是继承了IEnumerable接口后,必须实现GetEnumerator方法,我也试了用同样方法名不同参数的函数,foreach只会调用接口的方法(红色字体的方法)

 

今天周末又是无聊的一天!

以上是关于迭代器的疑惑的主要内容,如果未能解决你的问题,请参考以下文章

带有顶点/片段着色器的光。使用不同的变量。 (openGL)

向量和迭代器的分段错误? [关闭]

基于指针的基本随机访问迭代器的代码?

红黑树底层迭代器的实现

红黑树底层迭代器的实现

迭代器的抽象