回答:
ドキュメントから:
EnumerateFilesメソッドとGetFilesメソッドは次のように異なります。EnumerateFilesを使用すると、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。GetFilesを使用する場合、配列にアクセスするには、名前の配列全体が返されるまで待つ必要があります。したがって、多くのファイルとディレクトリを使用している場合、EnumerateFilesの方が効率的です。
したがって、基本的に、遅延評価が可能なEnumerateFiles
an IEnumerable
を返しますが、返す前に完全に入力されている必要があるGetFiles
a string[]
を返します。
FileSystemEnumerableFactory.CreateFileInfoIterator()
。しかし、EnumerateFiles()
このイテレータを直接返し、その間にGetFiles()
エクストラを作成List
して呼び出しますToArray()
。したがって、速度を重視する場合EnumerateFiles()
は、イテレータを使用して自分で処理することが理にかなっています。
EnumerateFiles
戻りIEnumerable<string>
、遅延実行を意味します。Fx4以降でのみ使用できます。
EnumerateFilesを使用する場合、を使用すると、すべての速度が失われます.Last
。もちろん、これは理にかなっています。最後のファイルに到達するには、すべてのファイルを列挙してから、最後のファイルを取得する必要があるためです。
ただし、.First
またはを使用する.FirstOrDefault
と、最初のアイテムを取得して次に進むため、非常に高速になります。
Array
vsのEnumerable
側面とは別に、どのような違いがあるのかを尋ねました。あなたの答えはそのようなすべての状況に一般的ですが、尋ねられた質問には答えません。