[C#] Directory.EnumerateFiles와 Directory.GetFiles의 차이점은 무엇입니까?

의 차이 무엇입니까 Directory.EnumerateFiles대는 GetFiles?

분명히 하나는 배열을 반환하고 다른 하나는 Enumerable을 반환합니다.

다른 거있어?



답변

에서 워드 프로세서 :

EnumerateFiles 및 GetFiles 메서드는 다음과 다릅니다. EnumerateFiles를 사용하면 전체 컬렉션이 반환되기 전에 이름 컬렉션 열거를 시작할 수 있습니다. GetFiles를 사용할 때는 배열에 액세스하기 전에 전체 이름 배열이 반환 될 때까지 기다려야합니다. 따라서 많은 파일과 디렉터리를 사용하는 경우 EnumerateFiles가 더 효율적일 수 있습니다.

그러니까 기본적으로, EnumerateFiles반환 IEnumerable하는 반면 게으르게 다소 평가 될 수있는 GetFiles반환 string[]은 반환하기 전에 가지고있는 완전히 채워 할 수 있습니다.


답변

EnumerateFiles리턴 IEnumerable<string>되고 지연된 실행을 의미합니다. Fx4 이상에서만 사용할 수 있습니다.


답변

EnumerateFiles를 사용할 때를 사용하면 모든 속도가 손실됩니다 .Last. 마지막 파일에 도달하려면 모든 파일을 열거 한 다음 마지막 파일을 가져와야하므로 당연한 일입니다.

그러나 단순히 첫 번째 항목을 잡고 계속 진행하기 때문에 사용 .First하거나 .FirstOrDefault매우 빠르게됩니다.


답변