在"C#中,什么时候用yield return"中,我们了解到:使用yield return返回集合,不是一次性加载到内存中,而是客户端每调用一次就返回一个集合元素,是一种"按需供给"。本篇来重温yield return的用法,探秘yield背后的故事并自定义一个能达到yield return相同效果的类,最后体验yield break的用法。
class Program
{
static Random r = new Random();
static IEnumerable<int> GetList(int count)
{
List<int> list = new List<int>();
for (int i = 0; i < count; i++)
{
list.Add(r.Next(10));
}
return list;
}
static IEnumerable<int> GetList2(int count)
{
for (int i = 0; i < count; i++)
{
yield return r.Next(10);
}
}
static void Main(string[] args)
{
foreach (int item in GetList2(5))
Console.WriteLine(item);
Console.WriteLine("Hello World!");
}
void test()
{
Func<string, int> del3 = (string text) => text.Length;
// 可以省略参数类型string,把上面代码再简化为:
Func<string, int> del4 = (text) => text.Length;
int M = del3("FFFFFJJJJJ");
int n = del4("2222");
}
}