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