一.测试代码
关于Yield使用,先来直接上测试代码,看不同之处。
static void Main(string[] args)
{
var test1 = GetResult();
Console.WriteLine("未用yield");
foreach (var i in test1)
{
Console.WriteLine(i);
}
Console.WriteLine("**********************************");
Console.WriteLine("使用yieldReturen");
var test2 = GetResultByYield();
foreach (var i in test2)
{
Console.WriteLine(i);
}
Console.WriteLine("**********************************");
Console.WriteLine("使用yieldBreak");
var test3 = GetResultByYieldBreak();
foreach (var i in test3)
{
Console.WriteLine(i);
}
Console.ReadKey();
}
public static IEnumerable<int> GetResult()
{
var strs = new List<int>();
for (int i = 0; i < 10; i++)
{
strs.Add(i);
}
return strs;
}
public static IEnumerable<int> GetResultByYield()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
public static IEnumerable<int> GetResultByYieldBreak()
{
for (int i = 0; i < 10; i++)
{
if (i < 8)
{
yield return i;
}
else
{
yield break;
}
}
}
二、测试结果
下面再来看执行结果。