2018年6月28日 星期四

[C#] yeild return的作用

yeild return:當遇到符合條件之元素時,立即將傳回該元素至上一層進行運算,待上一層運算完成後,再繼續執行迴圈搜尋判斷下一個元素。

yeild return的限制:

  • 回傳類型必須為IEnumerable, IEnumerator
  • 不可包含任何 ref 與 out 參數
  • 匿名方法與unsafe區塊不可使用yield

以下三段程式碼結果意義相同:

//傳統方式找出正整數
public static IEnumerable GetPositive(IEnumerable list)
{
   List newList = new List();
   foreach (var item in list)
   {
      if (item > 0)
      {
         newList.Add(item);
      }
   }
   return newList;
}

//使用Linq找出正整數
public static IEnumerable GetPositiveByLinq(IEnumerable list)
{
   return list.Where(x => x > 0);
}

//使用yield return找出正整數
public static IEnumerable GetPositiveByYield(IEnumerable list)
{
   foreach (var item in list)
   {
      if (item > 0)
      {
         yield return item;
      }
   }
}

沒有留言:

張貼留言