yield を使ってみた
yieldって遅いからあまり使わないみたいだけど、使う機会に巡り会った^^
コンテキスト キーワード yield - C# リファレンス | Microsoft Docs
List>型のデータをフラット(配列)にする必要があって、初のyieldを使うことになった。(データ量は100程度だったので速度は気にならなかった。
namespace Sample { public class MyItem { public Guid ID; public MyItem() { this.ID = Guid.NewGuid(); } } public class MyItems : IEnumerable<MyItem> { public List<MyItem> itemList = new List<MyItem>(); public IEnumerator<MyItem> GetEnumerator() { return this.itemList.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { throw new NotImplementedException(); } } class YieldSample { static void Main(string[] args) { List<MyItems> itemList = new List<MyItems>(); // データ格納 ・・・ foreach (var item in GetEnumerable(itemList)) { Console.write(item.ID); } } public static IEnumerable<MyItem> GetEnumerable(List<MyItems> itemsList) { foreach (var itemList in itemsList) { foreach (var item in itemList) { yield return item; } } } } }
スッキリ書く事はできたと思う。。