C#基础:yield return关键字的特点

一、特点

1.最终返回的结果是IEnumerable<T>

2.使用yield return时,返回的是单个元素(即T)

3.好处:延迟加载,需要时才计算

二、验证

通过打断点可知,只有当listB遍历的时候,才会进入GetList方法,因此说明它是懒加载的

cs 复制代码
class Program
{
    static void Main()
    {
        // 创建两个示例列表
        List<Teacher> listA = new List<Teacher>
        {
            new Teacher { Name = "John", Classes = "1" },
            new Teacher { Name = "Jane", Classes = "2" },
            new Teacher { Name = "Jack", Classes = "1" }
        };

        // 获取符合条件的教师
        IEnumerable<Teacher> listB = GetList(listA);

        // 输出符合条件的教师
        foreach (var teacher in listB)
        {
            Console.WriteLine($"Name: {teacher.Name}, Classes: {teacher.Classes}");
        }
    }

    private static IEnumerable<Teacher> GetList(List<Teacher> data)
    {
        foreach (var item in data)
        {
            if (item.Classes == "1")
            {
                yield return item;
            }
        }
    }
}

public class Teacher
{
    public string Name { get; set; }
    public string Classes { get; set; }
}
相关推荐
羊小猪~~9 分钟前
【QT】-- 模型与视图简介
开发语言·数据库·c++·后端·qt·前端框架·个人开发
叶微信10 分钟前
Qt相关面试题
开发语言·qt
淼淼爱喝水14 分钟前
OpenEuler 系统下 Ansible 环境部署与连通性测试完整步骤
linux·开发语言·php·openeuler
七夜zippoe25 分钟前
OpenClaw 多渠道统一管理:构建全平台智能消息中枢
开发语言·microsoft·github·多渠道·openclaw
froginwe1134 分钟前
HTML 表单
开发语言
AmyLin_200134 分钟前
【pdf2md-3:实现揭秘】福昕PDF SDK Python 开发实战:从逐字符提取到 LR 版面分析
开发语言·python·pdf·sdk·markdown·pdf2md
赫瑞1 小时前
Java中的图论3 —— Floyd
java·开发语言·图论
心之语歌1 小时前
Vue2 data + Vue3 ref/reactive 核心知识点总结
开发语言·前端·javascript
关于不上作者榜就原神启动那件事1 小时前
@Transactional事务失效总结
java·开发语言·jvm
jaysee-sjc1 小时前
【项目三】用GUI编程实现局域网群聊软件
java·开发语言·算法·安全·intellij-idea