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; }
}
相关推荐
傻傻虎虎15 分钟前
【QT】ModbusTCP读写寄存器类封装
开发语言·数据库·qt
独行soc22 分钟前
2025年渗透测试面试题总结-华顺信安[实习]安全服务工程师(题目+回答)
运维·开发语言·学习·安全·面试·渗透测试·php
王RuaRua33 分钟前
[数据结构]6. 队列-Queue
开发语言·数据结构·算法·leetcode
姜行运38 分钟前
数据结构【AVL树】
android·数据结构·c#
敲键盘的小夜猫1 小时前
如何理解大模型的幻觉输出及RAG技术的应用与实战案例
开发语言·python
恒者走天下1 小时前
c++学习方向选择说明
开发语言·c++·学习
zhangpeng4555479401 小时前
C++编程起步项目
开发语言·前端·c++
KeithTsui2 小时前
C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)
linux·c语言·开发语言·c++·算法·word
fashia2 小时前
Java转Go日记(四十四):Sql构建
开发语言·后端·golang·go
lsnm3 小时前
【LINUX操作系统】生产者消费者模型(下):封装、信号量与环形队列
linux·运维·服务器·开发语言·c++·ubuntu·centos