高级
迭代器
前言
迭代器是用于遍历集合(如列表、元组等)的特殊方法。通过迭代器方法,我们可以循环访问对象中的每个元素,并逐个返回这些元素。本文将介绍如何在 C# 中创建迭代器方法以及如何使用它们来处理集合。
作用
迭代器的主要作用是简化集合的遍历操作。通过使用迭代器,我们可以方便地循环访问集合中的元素,而无需手动编写复杂的循环逻辑。此外,迭代器还支持延迟执行(lazy evaluation),即在实际需要时才计算或返回元素,从而提高效率。
使用场景
- 集合遍历:当需要遍历一个集合并处理每个元素时,可以使用迭代器来简化代码。
- 延迟计算:使用迭代器可以实现延迟计算,仅在需要时生成元素,这对于处理大型数据集尤其有用。
- 自定义集合:在自定义集合类时,可以实现迭代器方法,以便通过
foreach
语句遍历集合。
示例
- 示例 1:基本迭代器方法
using System;
using System.Collections;
class Program
{
// 定义一个迭代器方法
static IEnumerable GetString()
{
yield return "Sunday";
yield return 2;
}
static void Main()
{
// 显示 GetString() 方法返回的值
foreach (var item in GetString())
{
Console.WriteLine(item);
}
}
}
输出
Sunday
2
在这个例子中,GetString()
是一个迭代器方法,通过 yield return
返回了 “Sunday” 和 2。foreach
循环用于遍历 GetString()
返回的结果并打印每个元素。
- 示例 2:带列表的迭代器方法
using System;
using System.Collections.Generic;
class Program
{
// 定义一个迭代器方法
static IEnumerable<int> GetList()
{
// 创建一个列表
List<int> myList = new List<int>
{
1,
2,
4
};
// 遍历 myList 的元素
foreach (var value in myList)
{
// 返回列表中能被 2 整除的元素
if (value % 2 == 0)
yield return value;
}
}
static void Main()
{
// 显示 GetList() 方法返回的值
foreach (var item in GetList())
{
Console.WriteLine(item);
}
}
}
输出
2
4
在这个例子中,我们定义了一个名为 GetList()
的迭代器方法,返回类型是 IEnumerable<int>
。在 GetList()
方法内部,我们使用 yield return
遍历 myList
列表,并返回所有能被 2 整除的元素。foreach
循环再次用于遍历 GetList()
返回的结果并打印符合条件的元素。
结语
通过使用迭代器,我们可以更加简洁和高效地处理集合中的元素。迭代器方法不仅使代码更易于维护和阅读,还提供了强大的功能来实现自定义的集合遍历和延迟计算。在 C# 中,掌握迭代器的使用是编写高效、灵活代码的重要技能。