高级

迭代器

预计阅读时间1 分 7 views

前言

迭代器是用于遍历集合(如列表、元组等)的特殊方法。通过迭代器方法,我们可以循环访问对象中的每个元素,并逐个返回这些元素。本文将介绍如何在 C# 中创建迭代器方法以及如何使用它们来处理集合。

作用

迭代器的主要作用是简化集合的遍历操作。通过使用迭代器,我们可以方便地循环访问集合中的元素,而无需手动编写复杂的循环逻辑。此外,迭代器还支持延迟执行(lazy evaluation),即在实际需要时才计算或返回元素,从而提高效率。

使用场景

  1. 集合遍历:当需要遍历一个集合并处理每个元素时,可以使用迭代器来简化代码。
  2. 延迟计算:使用迭代器可以实现延迟计算,仅在需要时生成元素,这对于处理大型数据集尤其有用。
  3. 自定义集合:在自定义集合类时,可以实现迭代器方法,以便通过 foreach 语句遍历集合。

示例

  1. 示例 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() 返回的结果并打印每个元素。

  1. 示例 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# 中,掌握迭代器的使用是编写高效、灵活代码的重要技能。

Leave a Comment

分享此文档

迭代器

或复制链接

内容