- 【ゲームエンジン】Unity初心者質問スレBuild2
964 :名前は開発中のものです。[sage]:2020/01/10(金) 12:14:16.98 ID:6FaPVqIC - >>963
LINQのメソッドに渡すデリゲートは取り扱いを間違えるとGC対象になるし それに関してググって出てくる記事がほぼ全て検証も解釈も間違ってるから使うなというのは分かる
|
- 【ゲームエンジン】Unity初心者質問スレBuild2
968 :名前は開発中のものです。[sage]:2020/01/10(金) 14:23:25.79 ID:6FaPVqIC - >>967
IEnumerableは一つずつ取り出して処理する為の機能だから、 複製はされないしチェーンの数だけループ発生したりもしないよ もちろんToArray()で新規配列は生成されるしOrderBy()でも内部で別のループが生まれてしまうがそれはそういう関数だからな
|
- 【ゲームエンジン】Unity初心者質問スレBuild2
970 :名前は開発中のものです。[sage]:2020/01/10(金) 18:42:11.72 ID:6FaPVqIC - >>969
例えばこんなLINQがあるとするだろ var seq = list.Where(A).Where(B).Where(C); foreach(var n in seq) Console.WriteLine(n); 内部的にはこの処理と同じ var tmp = list.GetEnumerator(); while(tmp.MoveNext()){ var n = tmp.Current; if(!A(n)) continue; if(!B(n)) continue; if(!C(n)) continue; Console.WriteLine(n); } 取り出した要素をチェーンに繋いである関数に順番に渡してるだけ 要素一つにMoveNextを何回も呼んでるわけじゃない
|