FieldFoo
を持つクラスがあり、オブジェクトのコレクションをValueで並べ替えたいとします。1 つの方法はのメソッドを実装することですが、このように言語統合クエリ (LINQ) を使用して実行することもできます。Int32
Bar
Foo
Bar
IComparable
CompareTo()
List<Foo> foos = new List<Foo>();
// assign some values here
var sortedFoos = foos.OrderBy(f => f.Bar);
これsortedFoos
で、foos
ソートされたコレクションができました。ただし、System.Diagnostics.StopWatch
オブジェクトを使用してコレクションの並べ替えにかかった時間を測定すると、OrderBy()
常に 0 ミリ秒になります。しかし、コレクションを印刷するときはいつでも、sortedFoos
明らかにソートされています。そんなことがあるものか。コレクションをソートするのに文学的な時間はかかりませんが、メソッドの実行後にコレクションはソートされますか? 誰かがそれがどのように機能するかを説明できますか? そしてまた一つのこと。コレクションを並べ替えた後、foos
別の要素を追加したとします。コレクションを印刷するたびに、追加した要素が最後にあるはずですよね?違う !コレクションは、その要素を追加しても、追加した要素はコレクションfoos
の一部だったように並べ替えられますfoos
foos
並べ替え後。私はそれがどのように機能するのか理解できません。誰かが私のためにそれを明確にすることができますか?!