一、特点
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; }
}