LINQ クエリで ToList() または ToArray() を呼び出す方が良いですか?という質問を読んでいました。そして、動的にサイズを変更する内部クラスを使用する代わりに、Enumerable.ToArray()
最初にメソッドを呼び出してコレクションのサイズを見つけないのはなぜだろうと思っていました。次のようなもの:Count()
Buffer{T}
T[] ToArray<T>(IEnumerable<T> source)
{
var count = source.Count();
var array = new T[count];
int index = 0;
foreach (var item in source) array[index++] = item;
return array;
}
設計者や実装者の頭の中がどうなっているのかわからないことはわかっていますが、彼らは私よりずっと賢いと確信しています。この質問をする最善の方法は、上記のアプローチの何が問題なのかということです。メモリ割り当てが少ないようで、それでも O(n) 時間で動作します。