違いは何ですか Directory.EnumerateFiles
vs GetFiles
?
1つは明らかに配列を返し、もう1つはEnumerableを返します。
他に何か?
ドキュメント から:
EnumerateFilesメソッドとGetFilesメソッドは次のように異なります。EnumerateFilesを使用すると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。 GetFilesを使用する場合、名前の配列全体が返されるのを待ってから、配列にアクセスできます。したがって、多くのファイルとディレクトリを操作している場合、EnumerateFilesの方が効率的です。
基本的に、EnumerateFiles
はIEnumerable
を返しますが、これは多少遅延評価することができますが、GetFiles
はstring[]
戻る前に完全に入力する必要があります。
EnumerateFiles
はIEnumerable<string>
を返し、これは実行の遅延を意味します。 Fx4以降でのみ使用可能です。
EnumerateFilesを使用する場合、.Last
を使用すると、すべての速度が失われます。これは当然のことです。最後のファイルに到達するには、すべてのファイルを列挙してから最後のファイルを取得する必要があるためです。
ただし、.First
または.FirstOrDefault
を使用すると、最初のアイテムを取得して先に進むだけなので、非常に高速になります。