文章详情

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#
发布时间:2025-07-12
comment

全部评论