web-dev-qa-db-ja.com

Directory.EnumerateFilesとDirectory.GetFilesの違いは何ですか?

違いは何ですか Directory.EnumerateFiles vs GetFiles

1つは明らかに配列を返し、もう1つはEnumerableを返します。

他に何か?

127
DarthVader

ドキュメント から:

EnumerateFilesメソッドとGetFilesメソッドは次のように異なります。EnumerateFilesを使用すると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。 GetFilesを使用する場合、名前の配列全体が返されるのを待ってから、配列にアクセスできます。したがって、多くのファイルとディレクトリを操作している場合、EnumerateFilesの方が効率的です。

基本的に、EnumerateFilesIEnumerableを返しますが、これは多少遅延評価することができますが、GetFilesstring[]戻る前に完全に入力する必要があります。

154
Daniel DiPaolo

EnumerateFilesIEnumerable<string>を返し、これは実行の遅延を意味します。 Fx4以降でのみ使用可能です。

29
Henk Holterman

EnumerateFilesを使用する場合、.Lastを使用すると、すべての速度が失われます。これは当然のことです。最後のファイルに到達するには、すべてのファイルを列挙してから最後のファイルを取得する必要があるためです。

ただし、.Firstまたは.FirstOrDefaultを使用すると、最初のアイテムを取得して先に進むだけなので、非常に高速になります。

15
Skotte