c# 中的迭代器
迭代器是 C# 中的一种方法,用于数组或集合,如列表等。逐个检索元素。或者换句话说,我们可以说迭代器用于对集合执行迭代。该功能在 C# 2.0 中介绍。它使用 yield return 语句一次从集合中返回元素,并且它总是记住迭代器的当前位置,所以当下一次迭代发生时,它将返回给定集合的下一个元素。如果您想要停止迭代,您将使用屈服中断语句。
这个方法的返回类型是 IEnumerable、IEnumerable 、IEnumerator 或 IEnumerator 。这意味着通过使用迭代器编译器将自动为您创建 IEnumerable 或 IEnumerator 接口,不需要在您的类中实现 IEnumerable 或 IEnumerator 接口来使用 foreach 循环。当编译器在你的类中识别出一个迭代器时,它会自动创建当前的,移动下一个,并释放 IEnumerable 或 IEnumerator 接口的方法。
要点:
- 迭代器可以用作方法,也可以用作属性。
- 迭代器方法也称为 get 访问器。
- 您可以将迭代器用作方法或 get 访问器。
- 不能在事件实例构造函数、静态构造函数或静态终结器中使用迭代器。
- 迭代器方法不包含 ref 或 out 参数。
- 这里,yield 不是保留字,但当你用 yield 搭配 return 或 break 语句时,那么 yield 就有了特殊的含义。
- 您可以使用多个收益率报表。
- 它通常用于泛型或非泛型集合。
- 当您使用迭代器时,有必要添加系统。集合。程序中的通用命名空间。
例 1:
C
// C# program to illustrate the concept
// of iterator using list collection
using System;
using System.Collections.Generic;
class GFG {
public static IEnumerable<string> GetMyList()
{
// Creating and adding elements in list
List<string> my_list = new List<string>() {
"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<string> my_slist = GetMyList();
// Display the elements return from iteration
foreach(var i in my_slist)
{
Console.WriteLine(i);
}
}
}
Output:
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<string> 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<string> myitems = GetMyArray();
// Display the elements return from iteration
foreach(var i in myitems)
{
Console.WriteLine(i);
}
}
}
Output:
Geeks
geeks123
1234geeks
版权属于:月萌API www.moonapi.com,转载请注明出处