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;
}
}
}
沒有留言:
張貼留言