2016-04-23 23 views

答えて

3

リストにそれを変換すると可算一回反復し、新しいList<>に(偶数または値型の値)すべての参照をコピーします。次に、リストを繰り返します。つまり、2回繰り返すことになります。

列挙のソースとしてIEnumerable<>を使用すると、シーケンスに対して1回だけ反復処理されます。

投稿者が投稿した小さなスコープから、詳細をforeachのままにするのではなく、列挙子を使用して手動で反復を行うことにした理由は分かりません。

+0

なぜ著者は'使用する 'でしょうか?私はそれが自動的に処分する必要があるオブジェクトのためだと思った。 – shiva

+1

@shiva返された 'IEnumerator 'は 'IDisposable'を実装しています。詳細については、[ここ](https://msdn.microsoft.com/de-de/library/78dfe2yb(v = vs.110).aspx)を参照してください。 – nvoigt

+0

これは、 'IEnumerator 'を使用するたびに '使用する 'ことを意味するのでしょうか? – shiva

2
  1. は、あなたが2倍のデータを反復処理するだろうもちろんのこと、変換を実行するために追加メモリやCPUサイクルを必要とするであろう。

  2. イテレーション前にList<T>に変換する必要はありません。 foreachは、IEnumerable<T>を実装するものすべてを反復処理できます。

関連する問題