yield return IEnumerable
分兩段CODE
private static List<object> GetData()
{
List<object> lo = new List<object>();
for (int i = 0;i< int.MaxValue ; ++i) {
lo.Add(i);
}
return lo;
}
private static IEnumerable<object> GetData()
{
for (int i = 0;i< int.MaxValue ; ++i) {
yield return i;
}
}
呼叫端
foreach (var data in GetData()) {
Console.WriteLine(data);
}
用yield return + IEnumerable可以控制記憶體在10 mb以內而且都可以快速回復
但是如果用list 她必須要組好出來的物件一次回應
這兩者的差異 可能在少量沒差
但是我用的這個是max 如果是使用list 直接hang到2G才結束然後才有東西慢慢PRINT出來
這回歸到yield return的一次回應一個的好處
從這邊可以看反組譯的CODE
https://iter01.com/197081.html
具體上少資料沒有差
但是select 大資料出來就有差(但是有時候配上資料庫還有另一個雷區)