📜  C#2.0 迭代器

📅  最后修改于: 2020-11-01 03:01:05             🧑  作者: Mango

C#迭代器

C#迭代器是一种方法。它用于迭代集合,数组或列表的元素。迭代器使用yield return语句一次返回每个元素。

迭代器记住当前位置,并在下一次迭代中返回下一个元素。

迭代器的返回类型可以是IEnumerable或IEnumerator

要停止迭代,我们可以使用yield break语句。

C#迭代器示例1

在此示例中,我们迭代数组元素。

using System;
using System.Collections.Generic;
using System.Linq;
namespace CSharpFeatures
{
    class IteratorExample
    {
        public static IEnumerable GetArray()
        {
            int[] arr = new int[] { 5,8,6,9,1 };
            // Iterating array elements and returning
            foreach (var element in arr)
            {
                yield return element.ToString(); // It returns elements after executing each iteration
            }
        }
        public static void Main(string[] args)
        {
            // Storing elements, returned from the iterator method GetArray()
            IEnumerable elements = GetArray();
            foreach (var element in elements) // Iterating returned elements
            {
                Console.WriteLine(element);
            }
        }
    }
}

输出:

5
8
6
9
1

迭代器也可以用于迭代集合元素。在下面的示例中,我们正在迭代列表元素。

C#迭代器示例2

using System;
using System.Collections.Generic;
using System.Linq;
namespace CSharpFeatures
{
    class IteratorExample
    {
        public static IEnumerable GetList()
        {
            // List of string elements
            List list = new List();
            list.Add("Rohan"); // Adding elements
            list.Add("Peter");
            list.Add("Irfan");
            list.Add("Sohan");
            // Iterating and returing list elements
            foreach (var element in list)
            {
                yield return element; // It returns elements after executing each iteration
            }
        }
        public static void Main(string[] args)
        {
            // Storing elements, returned from the iterator method GetList()
            IEnumerable elements = GetList();
            foreach (var element in elements) // Iterating returned elements
            {
                Console.WriteLine(element);
            }
        }
    }
}

输出:

Rohan
Peter
Irfan
Sohan