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はそのまま残る。
代入するときに気をつければいいのかな


この記事が気に入ったらサポートをしてみませんか?