迭代器是C#中的一种方法,可在数组或列表等集合中使用该方法来逐个检索元素。换句话说,我们可以说迭代器用于对集合执行迭代。此功能在C#2.0中引入。它使用yield return语句一次返回集合中的元素,并且始终记住迭代器的当前位置,因此,在进行下一次迭代时,它将返回给定集合的下一个元素。如果要停止迭代,将使用yield break语句。
此方法的返回类型为IEnumerable,IEnumerable
重要事项:
- 迭代器可以用作方法或属性。
- 迭代器方法也称为获取访问器。
- 您可以将迭代器用作方法或获取访问器。
- 您不能在事件实例构造函数,静态构造函数或静态终结器中使用迭代器。
- 迭代器方法不包含ref或out参数。
- 在这里,yield不是保留字,但是当您将yield与return或break语句一起使用时,yield具有特殊含义。
- 您可以使用多个yield语句。
- 它通常与通用或非通用集合一起使用。
- 使用迭代器时,有必要在程序中添加System.Collections.Generic命名空间。
范例1:
C#
// C# program to illustrate the concept
// of iterator using list collection
using System;
using System.Collections.Generic;
class GFG {
public static IEnumerable GetMyList()
{
// Creating and adding elements in list
List my_list = new List() {
"Cat", "Goat", "Dog", "Cow" };
// Iterating the elements of my_list
foreach(var items in my_list)
{
// Returning the element after every iteration
yield return items;
}
}
// Main Method
static public void Main()
{
// Storing the elements of GetMyList
IEnumerable my_slist = GetMyList();
// Display the elements return from iteration
foreach(var i in my_slist)
{
Console.WriteLine(i);
}
}
}
C#
// C# program to illustrate the concept
// of iterator using array
using System;
using System.Collections.Generic;
class GFG {
public static IEnumerable GetMyArray()
{
string[] myarray = new string[] {"Geeks",
"geeks123", "1234geeks"};
// Iterating the elements of myarray
foreach(var items in myarray)
{
// Returning the element after every iteration
yield return items.ToString();
}
}
// Main Method
static public void Main()
{
// Storing the elements of GetMyArray
IEnumerable myitems = GetMyArray();
// Display the elements return from iteration
foreach(var i in myitems)
{
Console.WriteLine(i);
}
}
}
输出:
Cat
Goat
Dog
Cow
范例2:
C#
// C# program to illustrate the concept
// of iterator using array
using System;
using System.Collections.Generic;
class GFG {
public static IEnumerable GetMyArray()
{
string[] myarray = new string[] {"Geeks",
"geeks123", "1234geeks"};
// Iterating the elements of myarray
foreach(var items in myarray)
{
// Returning the element after every iteration
yield return items.ToString();
}
}
// Main Method
static public void Main()
{
// Storing the elements of GetMyArray
IEnumerable myitems = GetMyArray();
// Display the elements return from iteration
foreach(var i in myitems)
{
Console.WriteLine(i);
}
}
}
输出:
Geeks
geeks123
1234geeks