Directory.EnumerateFilesVs 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.EnumerateFilesVs 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, EnumerateFilesbir IEnumerableşekilde tembel olarak değerlendirilebilen GetFilesbir 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 Listo ve aramalardan ToArray(). Bu nedenle, hızla EnumerateFiles()ilgileniyorsanız, yineleyiciyi kendiniz kullanmak ve başa çıkmak mantıklıdır .
EnumerateFilesgeri 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, .Firstveya kullanımı .FirstOrDefaultçok hızlı olur, çünkü sadece ilk öğeyi alır ve devam eder.
Arrayvs Enumerableyö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.