OrderBy()でList内の順番を入れ替えたのに反映されない
List<Card> cards = GetCards();
cards = cards.OrderBy(a => System.Guid.NewGuid()).ToList();
CardのListを引っ張ってきて、Guidを使ってシャッフルしたはずが、なぜか反映されない。
解決
Listの参照先を値渡ししていたから。
ref List<Card> cards = ref GetRefCards();
cards = cards.OrderBy(a => System.Guid.NewGuid()).ToList();
基本的にはListは参照型なので、もらったListを操作したら元のListにも反映されるが、OrderBy()で新しく生成されたListを元々あった場所(cards)に代入するとcardsの参照先がOrderByで生成されたListに変わるが、元のListはそのまま残る。
代入するときに気をつければいいのかな
この記事が気に入ったらサポートをしてみませんか?