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; }
}
相关推荐
Dxy123931021633 分钟前
JS AES加密详解
开发语言·javascript·ecmascript
信息安全失业大专人员41 分钟前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体
4ever.ov01 小时前
精学C++第一站 从命名空间到引用:C++入门核心语法全梳理(13000字长文)
开发语言·c++·clion
小杨互联网1 小时前
Go 现代 CLI 工具离线镜像合集
开发语言·后端·golang·开源·go·命令行
揽星河..1 小时前
【C语言】数组
c语言·开发语言·算法
FRing031 小时前
JavaScript入门到精通三十三(异常处理、call方法、apply方法、bind方法、防抖、节流)
开发语言·前端·javascript
呆呆敲代码的小Y1 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
geovindu1 小时前
rust: Semaphore Pattern
开发语言·后端·设计模式·rust·代理模式·企业级信号量模式·同步型模式
淡海水2 小时前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
纪念 2292 小时前
C++ 算法(模拟)
开发语言·c++·算法