C#知識系列
yield是用於迭代,yield return用於返回IEnumerable<T>,yield break用於終止
先開始定義初始化資料
static List<int> InitialData()
{
return new List<int>() { 1, 2, 3, 4 };
}
常用的code處理
static IEnumerable<int> FilterWithoutYield()
{
List<int> result = new List<int>();
foreach (int i in GetInitialData())
{
if (i > 2)
{
result.Add(i);
}
}
return result;
}
上方是比較常用的方式進行處理是foreach處理完集合中所有元素,再返回
下方則是
static IEnumerable<int> FilterWithYield()
{
foreach (int item in InitialData())
{
if (item>2)
{
yield return item;
}
}
yield break;
}
clinet方式
foreach (var i in FilterWithYield())
{
Console.WriteLine(i); //3,4
}
第一種方法是把集合全部加載內存在foreach處理;第二種,clinet 調用一次,yield return就返回一個值給clinet。
簡單來說,如果不要把數據一次加載內存裡面,可以考慮用yield return實現
元哥的筆記