Qual é a diferença entre Directory.EnumerateFilesvs GetFiles?
Obviamente, um retorna uma matriz e o outro retorna Enumerable.
Algo mais?
Qual é a diferença entre Directory.EnumerateFilesvs GetFiles?
Obviamente, um retorna uma matriz e o outro retorna Enumerable.
Algo mais?
Respostas:
Dos documentos :
Os métodos EnumerateFiles e GetFiles diferem da seguinte maneira: Quando você usa EnumerateFiles, pode começar a enumerar a coleção de nomes antes que a coleção inteira seja retornada; ao usar GetFiles, você deve aguardar o retorno de toda a matriz de nomes antes de poder acessar a matriz. Portanto, quando você estiver trabalhando com muitos arquivos e diretórios, EnumerateFiles pode ser mais eficiente.
Então, basicamente, EnumerateFilesretornos IEnumerableque podem ser avaliados de alguma forma preguiçosamente, enquanto GetFilesretornos string[]que precisam ser totalmente preenchidos antes que possam retornar.
FileSystemEnumerableFactory.CreateFileInfoIterator(). Mas EnumerateFiles()retorna esse iterador diretamente enquanto GetFiles()cria extra Liste chama ToArray(). Portanto, se você se preocupa com a velocidade, faz sentido usar EnumerateFiles()e lidar com o iterador.
EnumerateFilesretorna IEnumerable<string>e isso implica execução adiada. Está disponível apenas em Fx4 e superior.
Ao usar EnumerateFiles, toda a velocidade será perdida se você estiver usando .Last. Isso faz sentido, é claro, porque para chegar ao último arquivo, ele precisará enumerar todos os arquivos e pegar o último.
No entanto, usar .Firstou .FirstOrDefaultse torna muito rápido, porque simplesmente pega o primeiro item e segue em frente.
Arrayvs. EnumerableSua resposta é genérica para todas essas situações, mas não responde à pergunta.