Directory.EnumerateFiles
Vs arasındaki fark nedir GetFiles
?
Açıkçası biri bir dizi döndürür ve diğeri Enumerable döndürür.
Başka herhangi bir şey?
Directory.EnumerateFiles
Vs arasındaki fark nedir GetFiles
?
Açıkçası biri bir dizi döndürür ve diğeri Enumerable döndürür.
Başka herhangi bir şey?
Yanıtlar:
Gönderen docs :
EnumerateFiles ve GetFiles yöntemleri aşağıdaki gibi farklılık gösterir: EnumerateFiles kullandığınızda, tüm koleksiyon döndürülmeden önce ad koleksiyonunu numaralandırmaya başlayabilirsiniz; GetFiles kullandığınızda, diziye erişebilmek için tüm ad dizisinin döndürülmesini beklemeniz gerekir. Bu nedenle, birçok dosya ve dizinle çalışırken, EnumerateFiles daha verimli olabilir.
Temel olarak, EnumerateFiles
bir IEnumerable
şekilde tembel olarak değerlendirilebilen GetFiles
bir dönerken geri dönmeden string[]
önce tam olarak doldurulması gereken bir döner döndürür .
FileSystemEnumerableFactory.CreateFileInfoIterator()
. Ama EnumerateFiles()
ederken doğrudan bu yineleyici döndürür GetFiles()
ekstra kurar List
o ve aramalardan ToArray()
. Bu nedenle, hızla EnumerateFiles()
ilgileniyorsanız, yineleyiciyi kendiniz kullanmak ve başa çıkmak mantıklıdır .
EnumerateFiles
geri döner IEnumerable<string>
ve ertelenmiş icra anlamına gelir. Sadece Fx4 ve üstü sürümlerde mevcuttur.
EnumerateFiles kullanırken, o zaman kullanıyorsanız tüm hız kaybedilir .Last
. Bu elbette mantıklı, çünkü son dosyaya ulaşmak için tüm dosyaları numaralandırmalı, ardından son dosyayı alması gerekecek.
Ancak, .First
veya kullanımı .FirstOrDefault
çok hızlı olur, çünkü sadece ilk öğeyi alır ve devam eder.
Array
vs Enumerable
yönü dışında hangi farklılıkların olduğunu sordu . Cevabınız tüm bu durumlar için geneldir ancak sorulan soruya cevap vermez.