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; }
}
相关推荐
月巴月巴白勺合鸟月半2 小时前
工作记录 2017-08-01
c#·健康医疗
MessiGo4 小时前
Javascript 编程基础(5)面向对象 | 5.2、原型系统
开发语言·javascript·原型模式
慢半拍iii5 小时前
数据结构——D/串
c语言·开发语言·数据结构·c++
爱学习的白杨树5 小时前
Sentinel介绍
java·开发语言
Frankabcdefgh5 小时前
Python基础数据类型与运算符全面解析
开发语言·数据结构·python·面试
kaiaaaa5 小时前
算法训练第十五天
开发语言·python·算法
南玖i6 小时前
vue3 + ant 实现 tree默认展开,筛选对应数据打开,简单~直接cv
开发语言·前端·javascript
南枝异客6 小时前
三数之和-力扣
开发语言·javascript·数据结构·算法·leetcode·排序算法
爱意随风起风止意难平7 小时前
AIGC 基础篇 Python基础 05 元组,集合与字典
开发语言·python·aigc
Rose 使者7 小时前
全网手机二次放号查询接口如何用C#进行调用?
c#·api·手机二次放号