2017-01-13 5 views
7

나는 IEnumerable<SomeClass>을 가지고 있는데 그 목록을 잘 모르거나 모르겠다면 (List<T>의 관점에서) 나는 그 열거 형을 두 번 열거하지 않도록 그 IEnumerable을 열거해야한다. 두 번이나 그런 식으로). 때때로 당신이 그것을 잊지 좋은 - -IList로 캐스팅 한 다음 일반 ToList()보다 null 인 경우 ToList()를 호출합니까?

ReSharper에서은을 IEnumerable의 가능한 여러 열거에 대해 저를 경고하고 quickfixes 선택 할 수 있습니다 :

  • 열거는
  • 을 나열하는 배열에

    • 열거를

      나열 할 열거 형을 선택하면 resharper는 로컬 변수를 도입하고 다음과 같은 방식으로 IEnumerable을 할당합니다 (예 :

      ).210

      이제 내 질문 :

      items.ToList();은 왜 그렇게 간단하지 않습니까?

      먼저 IList<SomeClass>로 전송하려는 장점은 무엇입니까?

    답변

    7

    은 아마 IEnumerable이 캐스팅을 시도하는 것이 좋습니다 그것을 ReSharper에서 일을하기 전에인지 먼저 확인하기 때문에 그냥 exsiting 하나에서 새 목록을 생성합니다 ToList()를 호출이 경우, 이미 목록에있는 IList 여부 및 단지 그렇지 않은 경우에 대비하여 우리는 약간의 비용이 드는 ToList() 작업을 수행 할 것입니다.

    +0

    아, 제 말은 많은 의미가 있습니다! 고맙습니다 :) – Mafii