C#中的迭代器是什么,如何使用?

我想了解一下C#中的迭代器是什么,如何使用?我在编写代码时遇到了一些问题,希望有经验的开发者能够指导我如何正确地使用它。我已经阅读了一些相关的文档,但仍然感到困惑。如果有示例代码或详细的解释,将非常有帮助。对于C#新手来说,迭代器可能是一项增强程序性能的强大特性,我想要充分理解它并掌握正确的使用方法。感谢您的帮助!

提问时间:2023-07-22 17:54:56 编辑时间:2023-07-22 17:54:58 提问者: Mystic_Moonlight
  • 雪山飞狐
    6

    迭代器是一种可以枚举集合对象的机制,它可以使代码更加简洁高效。在C#中,我们可以通过在方法前添加yield关键字来定义一个迭代器,并使用foreach语句来枚举集合对象。以下是一个简单的示例代码,演示了如何使用迭代器:

    using System;
    using System.Collections;
    
    public class MyList<T> : IEnumerable
    {
        private T[] items;
    
        public MyList()
        {
            items = new T[4];
        }
    
        public void Add(T item)
        {
            if(items.Length == Count)
            {
                Array.Resize(ref items, Count * 2);
            }
    
            items[Count++] = item;
        }
    
        public int Count { get; private set; }
    
        public IEnumerator GetEnumerator()
        {
            for(int i=0; i<Count; i++)
            {
                yield return items[i];
            }
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            MyList<int> list = new MyList<int>();
            list.Add(1);
            list.Add(2);
            list.Add(3);
    
            foreach(int i in list)
            {
                Console.WriteLine(i);
            }
        }
    }
    

    在这个示例中,我们先定义了一个名为MyList的类,并在其中实现Add()和GetEnumerator()方法。Add方法用于向集合中添加元素,GetEnumerator方法则是迭代器方法,返回值为IEnumerator类型,其中yield return语句用于返回集合中的每个元素。最后,我们在Main方法中创建了一个MyList实例并使用foreach语句来枚举集合中的元素。

    希望这个示例能够帮助你理解迭代器的使用方法。如果你有任何其他疑问,请随时提出。

    回答时间:2023-07-22 17:55:02