답변:
에서 워드 프로세서 :
EnumerateFiles 및 GetFiles 메서드는 다음과 다릅니다. EnumerateFiles를 사용하면 전체 컬렉션이 반환되기 전에 이름 컬렉션 열거를 시작할 수 있습니다. GetFiles를 사용할 때는 배열에 액세스하기 전에 전체 이름 배열이 반환 될 때까지 기다려야합니다. 따라서 많은 파일과 디렉터리를 사용하는 경우 EnumerateFiles가 더 효율적일 수 있습니다.
그러니까 기본적으로, EnumerateFiles
반환 IEnumerable
하는 반면 게으르게 다소 평가 될 수있는 GetFiles
반환 string[]
은 반환하기 전에 가지고있는 완전히 채워 할 수 있습니다.
FileSystemEnumerableFactory.CreateFileInfoIterator()
. 그러나 EnumerateFiles()
동안 직접 반복자를 반환 GetFiles()
추가 구축 List
IT와 통화에서 ToArray()
. 따라서 속도가 걱정된다면 EnumerateFiles()
반복자를 직접 사용 하고 처리하는 것이 좋습니다.
EnumerateFiles
리턴 IEnumerable<string>
되고 지연된 실행을 의미합니다. Fx4 이상에서만 사용할 수 있습니다.
EnumerateFiles를 사용할 때를 사용하면 모든 속도가 손실됩니다 .Last
. 마지막 파일에 도달하려면 모든 파일을 열거 한 다음 마지막 파일을 가져와야하므로 당연한 일입니다.
그러나 단순히 첫 번째 항목을 잡고 계속 진행하기 때문에 사용 .First
하거나 .FirstOrDefault
매우 빠르게됩니다.
Array
대 Enumerable
측면. 귀하의 답변은 이러한 모든 상황에 대해 일반적인 것이지만 질문에 대한 답변은 아닙니다.