yield return 和 yield break

//yield return 返回类型必须为 IEnumerableIEnumerable<T>IEnumerator 或 IEnumerator<T>

static IEnumerator<int> yieldTest() //yield return 返回IEnumerator 
{
yield return 1;
yield return 4;
if (true)//如果为True 输出 1,4;//如果是False 输出 1,4,3,2
{
yield break;
}
yield return 3;
yield return 2;
}
static void Main(string[] args)
{
var list = yieldTest();
while (list.MoveNext())
{
Console.WriteLine(list.Current);
}
Console.Read();
}

static IEnumerable<int> yieldTest2()//yield return 返回IEnumerable
{
yield return 1;
yield return 4;
if (!false)
{
yield break;
}
yield return 3;
yield return 2;
}
static void Main(string[] args)
{
var list = yieldTest2();
foreach(var item in list)
{
Console.WriteLine(item);
}
Console.Read();
}

原文地址:https://www.cnblogs.com/zhshlimi/p/5479721.html