をスキップforeachループに到達すると、ファイルはnullです。
(中の文で)foreachの内部では、プログラムがバック=>ステートメントにジャンプし、その後ファイルを埋めます。完了したら、foreachループをスキップし、決してそれを入力しません。GetFilesとEnumerateFilesは、foreachループ
私はここで迷っています。私のコードが1行戻ってくるのはなぜですか?私はEnumerateとGetFilesを試してみましたが、うまくいきません。
をスキップforeachループに到達すると、ファイルはnullです。
(中の文で)foreachの内部では、プログラムがバック=>ステートメントにジャンプし、その後ファイルを埋めます。完了したら、foreachループをスキップし、決してそれを入力しません。GetFilesとEnumerateFilesは、foreachループ
私はここで迷っています。私のコードが1行戻ってくるのはなぜですか?私はEnumerateとGetFilesを試してみましたが、うまくいきません。
コード「ジャンプバック」の理由は、Deferred Executionと呼ばれています。あなたがそこにあるLINQ式は、結果がforeachループで使われるまで実際には実行されません。
foreachループをスキップするには、列挙が空であるために起こります。 @Slaiがコメントで述べたように、あなたの拡張子リストに問題があるかもしれません(拡張子名が一般的な間違いである前に '。'を忘れています)。
あなたが列挙は保留されずに、すぐに実行したい場合(デバッグを容易にする)最も簡単な方法は、ちょうど.ToList(とあなたのLINQの式を終了することです)ので、のような:
var files = dir.EnumerateFiles("*.*", SearchOption.AllDirectories)
.Where(f => ext.Contains(Path.GetExtension(f.FullName)))
.ToList();
私はそのDeferred Executionを読む必要があります。それは間違いなくそれを修正した。ありがとうございました。 –
たぶん拡張が必要extリストのドット – Slai
それも働いた。助けてくれてありがとう。 –