トップページ > ゲ製作技術 > 2020年01月10日 > 6FaPVqIC

書き込み順位&時間帯一覧

4 位/29 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000001010001000003



使用した名前一覧書き込んだスレッド一覧
名前は開発中のものです。
【ゲームエンジン】Unity初心者質問スレBuild2

書き込みレス一覧

【ゲームエンジン】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を何回も呼んでるわけじゃない


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。