なんか動きがおかしいので、デバッグしていたら、以下の様なことがわかった。
int numOfFoo = 3;
// newが1回だけ実行され、その結果が3回使われる。
// コレクションの要素数は3だが、全て同じインスタンスが入っている。
var listX = Enumerable.Repeat(new Foo(), numOfFoo).ToList();
// newが3回実行される。
// コレクションの要素数は3で、別々のインスタンスが入っている。
var listO = Enumerable.Range(0, numOfFoo).Select((x) => new Foo()).ToList();
配列の初期化にRepeatを使っていたので、同じように書いたらダメダメだった。
気をつけよう。
0 件のコメント:
コメントを投稿