Yield关键字优化代码
传统:等所有执行完了才一次性返回的
class Program
{
static void Main(string[] args)
{
int[] ints = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (var item in GetEven(ints))
{
Console.WriteLine(item);
}
//输出
//2
//4
//6
//8
}
static public IEnumerable<int> GetEven(params int[] ints)
{
List<int> list = new List<int>();
foreach (var item in ints)
{
if (item % 2 == 0)
{
list.Add(item);
}
if (item == 9)
{
break;
}
}
}
}
c#
使用yield:并不是等所有执行完了才一次性返回的。而是调用一次就返回一次结果的元素
class Program
{
static void Main(string[] args)
{
int[] ints = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (var item in GetEven(ints))
{
Console.WriteLine(item);
}
//输出
//2
//4
//6
//8
}
static public IEnumerable<int> GetEven(params int[] ints)
{
foreach (var item in ints)
{
if (item % 2 == 0)
{
yield return item;
}// 并不是等所有执行完了才一次性返回的。而是调用一次就返回一次结果的元素
if (item == 9)
{
yield break;
}
}
}
}
c#
全部评论