Apa perbedaan antara Directory.EnumerateFilesvs GetFiles?
Jelas satu mengembalikan array dan yang lainnya mengembalikan Enumerable.
Ada yang lain?
Apa perbedaan antara Directory.EnumerateFilesvs GetFiles?
Jelas satu mengembalikan array dan yang lainnya mengembalikan Enumerable.
Ada yang lain?
Jawaban:
Dari dokumen :
Metode EnumerateFiles dan GetFiles berbeda sebagai berikut: Ketika Anda menggunakan EnumerateFiles, Anda bisa mulai menghitung kumpulan nama sebelum seluruh koleksi dikembalikan; ketika Anda menggunakan GetFiles, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateFiles dapat lebih efisien.
Jadi pada dasarnya, EnumerateFilesmengembalikan IEnumerableyang dapat dievaluasi agak malas, sedangkan GetFilesmengembalikan string[]yang harus diisi penuh sebelum dapat kembali.
FileSystemEnumerableFactory.CreateFileInfoIterator(). Tetapi EnumerateFiles()mengembalikan iterator ini secara langsung sementara GetFiles()membangun ekstra Listdari itu dan panggilan ToArray(). Jadi, jika Anda peduli kecepatan, masuk akal untuk menggunakan EnumerateFiles()dan menangani iterator sendiri.
EnumerateFileskembali IEnumerable<string>dan itu menyiratkan eksekusi yang ditangguhkan. Ini hanya tersedia di Fx4 dan lebih tinggi.
Saat menggunakan EnumerateFiles, semua kecepatan hilang jika Anda menggunakannya .Last . Ini masuk akal tentu saja, karena untuk sampai ke file terakhir, perlu untuk menghitung semua file, lalu ambil yang terakhir.
Namun, menggunakan .Firstatau .FirstOrDefaultmenjadi sangat cepat, karena hanya mengambil item pertama dan bergerak.
Arrayvs. EnumerableJawaban Anda bersifat umum untuk semua situasi seperti itu tetapi tidak menjawab pertanyaan yang diajukan.