7

Enumerable ( IEnumerable<T>) をリストに変換したい場合。

より効率的なもの:

  1. myEnumerable.ToList()

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

ありがとう!

4

3 に答える 3

7

実行にかかる時間はほぼ同じnew List<T>(myEnumerable)ですが、少し高速です。

myEnumerable.ToList()ボンネットの下で行いますが、 new List<T>(myEnumerable)最初にコレクションが null かどうかをチェックし、そうであれば例外をスローします。myEnumerable が null でないことがわかっている場合は、ToList() を使用できます。

しかし、私の意見では、最も読みやすいコードを記述してください。これは、あまり時間をかけるべきではないマイクロ最適化です。

于 2013-05-28T11:16:10.977 に答える
4

1 番目が 2 番目を呼び出すため、すべての意図と目的が同じになります。

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

于 2013-05-28T11:13:49.770 に答える
2

同じでしょう。(最初の方が読みやすいです。)

于 2013-05-28T11:15:19.110 に答える