때때로 ReSharper에서 대해 경고 : IEnumerable을ReSharper에서의 예제 코드는
의가능한 여러 열거
an SO question on how to handle this issue을있다, 그리고 ReSharper에서 사이트도 일 here을 설명합니다.
IEnumerable<string> names = GetNames().ToList();
내 질문이 특정 제안에 관한 것입니다 :이 여전히 2 - 각 루프에 두 번 컬렉션을 열거 발생하지 않습니다 대신이 작업을 수행 할 것을 몇 가지 예제 코드가?
가능한 여러 열거! 그것은 그것을 설명합니다. – user2250250
아니요. GetEnumerator() 메서드는 foreach 루프에서만 한 번 호출됩니다. 진짜 이유는 더러운 데이터의 위험 때문입니다. 예를 들어 GetNames()에는 SQL 쿼리가 있지만 IEnurable을 반환하는 쿼리 만 있습니다. .ToList()를 호출하면 모든 데이터가 메모리에 저장되므로 더티 데이터의 위험이 거의 없습니다.그러나 2 루프 오 퍼 레이션 사이에 많은 시간이 있으면 매번 SQL을 데이터베이스로 전송하면 더러운 데이터가 발생할 위험이 큽니다. –
@SunRobin 이것은 단순한 형태로 진실을 제시하는 답변이며, 여기에 언급되어 있습니다. 나는 그것을 개선하기 위해 아직 주변에 가지 못했다. "더티 데이터"를 사용하려면 추가 설명이 필요할 수 있습니다. – CodeCaster