1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
public Form1() { Stopwatch sw = new Stopwatch(); sw.Start(); //遅延評価 //var c = Enumerable.Range(1, 2).Select(x => stop(x)); //この表記だけだと即時評価されないので1秒もかからない //var c = Enumerable.Range(1, 2).Select(x => stop(x)).ToArray(); //このようにToArrayやToListをつけると、10秒かかる。 sw.Stop(); Debug.Print(sw.Elapsed.ToString()); //コレクションの読取専用 //IEnumerable //IReadOnlyCollection / ICollection //IReadOnlyList / IList //ReadOnlyCollection / List //IReadOnlyCollectionは IEnumerable + Countのみ。 //IReadOnlyListは IReadOnlyCollection + インデクサ。 //ReadOnlyCollection とあるがIListを実装している。 } private int stop(int n) { Debug.Print(n.ToString()); Thread.Sleep(1000 * 5); return n; } |