2017-01-13 5 views
7

IEnumerable<SomeClass>私はそのリストを細かく知らないのですが(List<T>の点で)、そのIEnumerableを列挙して、その列挙を2回列挙しないようにしなければなりません。 2回、またはそのようなもの)。IListにキャストして、プレーンToList()よりもnullのときにToList()を呼び出しますか?

ReSharperのは、IEnumerableをの可能複数の列挙について私に警告 - 時々あなたはそれを忘れて、良いです - あなたは簡易修正を選択することができます:

  • 列挙配列
  • 列挙する
を一覧表示します

リストする列挙型を選択すると、resharperはローカル変数を導入し、次のようにIEnumerableを割り当てます(例):

var enumeratedItems = items as IList<SomeClass> ?? items.ToList(); 

今質問:

items.ToList();はなぜですか?

最初にIList<SomeClass>にキャストしようとするとどのような利点がありますか?

答えて

7

はたぶんIEnumerableがそれをキャストしようと提案し、それをReSharperのを行う前に、それがある場合は最初にチェックするので、ちょうど、exsiting 1から新しいリストを作成しますToList()を呼び出して、この場合には、すでにリストであるIListかないとそれができない場合にのみ、少しコストがかかるToList()操作を実行します。

+0

ああ、私は知っている、多くの意味を参照してください!ありがとうございました :) – Mafii

関連する問題