遍历使用yield的IEnumerable
创始人
2024-12-04 04:30:11
0

在C#中,我们可以使用yield关键字来创建一个包含yield return语句的方法,该方法返回一个可枚举的集合。这样的方法可以在遍历时按需生成元素,而不需要一次性生成所有元素。下面是一个示例代码,展示了如何使用yield来遍历一个包含自定义对象的IEnumerable集合:

using System;
using System.Collections;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

public class People : IEnumerable
{
    private List _people;

    public People()
    {
        _people = new List
        {
            new Person("Alice", 25),
            new Person("Bob", 30),
            new Person("Charlie", 35)
        };
    }

    public IEnumerator GetEnumerator()
    {
        foreach (var person in _people)
        {
            yield return person;
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        var people = new People();

        foreach (var person in people)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}

在上面的示例中,我们定义了一个Person类,其中包含NameAge属性。然后,我们定义了一个People类,它实现了IEnumerable接口。在GetEnumerator方法中,我们使用yield return语句按需生成_people列表中的每个对象。最后,在Main方法中,我们通过foreach循环遍历People对象,并输出每个人的姓名和年龄。

运行以上代码,输出将会是:

Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35

通过使用yield关键字,我们可以轻松地创建一个按需生成元素的可枚举集合。这种方法非常适用于需要遍历大型集合或需要在遍历时执行复杂计算的情况。

相关内容

热门资讯

8分钟了解!情怀麻将挂真的,哈... 8分钟了解!情怀麻将挂真的,哈局十三张,攻略教程(有挂解说)1、下载好情怀麻将挂真的辅助软件之后点击...
五分钟了解!广西八一字牌外 挂... 五分钟了解!广西八一字牌外 挂,旋娱有挂吗,专业教程(有挂解说);1、广西八一字牌外 挂ai辅助优化...
一分钟了解!聚乐九州麻将有挂吗... 一分钟了解!聚乐九州麻将有挂吗,海南手机麻将有挂的么,2025新版技巧(有挂黑科技)1、海南手机麻将...
五分钟了解!天天福建十三张辅助... 五分钟了解!天天福建十三张辅助器,369山东麻将app有挂吗,存在挂教程(有挂脚本);天天福建十三张...
八分钟了解!微信边锋斗地主发牌... 八分钟了解!微信边锋斗地主发牌规律,牌乐门手机麻将助赢神器购买,必赢教程(有挂黑科技);1、在牌乐门...
一分钟了解!潮汕馆辅助器,湖北... 一分钟了解!潮汕馆辅助器,湖北休闲有辅助吗,必备教程(有挂教程)1、玩家可以在湖北休闲有辅助吗软件透...
二分钟了解!星悦麻将的规律,新... 二分钟了解!星悦麻将的规律,新牛魔王有挂吗,揭秘攻略(有挂规律)亲,关键说明,新牛魔王有挂吗赛季回归...
五分钟了解!天天福建十三张后台... 五分钟了解!天天福建十三张后台操作,新皇豪有挂吗,教你教程(有挂详情)1、天天福建十三张后台操作系统...
一分钟了解!江西中至棋牌有挂吗... 一分钟了解!江西中至棋牌有挂吗,青龙大厅辅助软件免费,详细教程(有挂普及)1、全新机制【青龙大厅辅助...
三分钟了解!钱塘13水有挂么,... 三分钟了解!钱塘13水有挂么,兴动茶苑有挂吗,存在挂教程(有挂辅助挂)运兴动茶苑有挂吗辅助工具,进入...