なんか動きがおかしいので、デバッグしていたら、以下の様なことがわかった。
    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 件のコメント:
コメントを投稿