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; }
}
相关推荐
AI小怪兽13 小时前
基于YOLOv13的汽车零件分割系统(Python源码+数据集+Pyside6界面)
开发语言·python·yolo·无人机
Z1Jxxx13 小时前
加密算法加密算法
开发语言·c++·算法
Eric.Lee202113 小时前
python实现 mp4转gif文件
开发语言·python·手势识别·手势交互·手势建模·xr混合现实
EntyIU13 小时前
python开发中虚拟环境配置
开发语言·python
charlie11451419114 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
wjs202414 小时前
Bootstrap5 消息弹窗
开发语言
资生算法程序员_畅想家_剑魔14 小时前
Kotlin常见技术分享-02-相对于Java 的核心优势-协程
java·开发语言·kotlin
IT=>小脑虎14 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
nbsaas-boot15 小时前
Go vs Java 的三阶段切换路线图
java·开发语言·golang
在路上看风景15 小时前
01. C++是如何工作的
开发语言·c++