2013-05-28 8 views
6

もしEnumerable(IEnumerable<T>)をリストに変換したいのであれば。リストにIEnumerableを変換する

より効率的にどのようなものです:

  1. myEnumerable.ToList()

  2. またはnew List<T>(myEnumerable)

ありがとう!

+2

私はrefletorを使用するには怠惰ですが、おそらく 'myEnumerable.ToList()'は 'new List (myEnumerable)'を呼び出します。 – Nahum

答えて

4

最初のものは2番目のものを呼び出すので、それらはすべて同じ目的と目的になります。

JITterは、ToList()メソッドをインライン化して、それらをヌルチェックのモジュロと同じにします。また、List<T>コンストラクターが呼び出すので、NULLチェックも実行するため、おそらくEnumerable<T>.ToList()のヌルチェックは冗長です。

2

同じですか。 (最初は読みやすくなります)

6

実行には同じ時間がかかりますが、new List<T>(myEnumerable)は少し速いです。

myEnumerable.ToList()はフードの下では行いますが、最初にコレクションがnullかどうかをチェックし、コレクションがnullの場合は例外をスローします。 myEnumerableがnullでないことがわかっている場合は、ToList()を使用できます。

私の意見では、読みやすいコードを書いてください。これは、あまりにも多くの時間を費やすべきではないマイクロ最適化です。

関連する問題