まだクロージャーが何であるかわかりません。この2つの例を掲載しました。これらの例が両方ともクロージャであるかどうかを知りたいですか?これらの例はC#クロージャですか?
例A:
List<DirectoryInfo> subFolders = new List<DirectoryInfo>();
Action<string> FilterSubFoldersStartA =
s => subFolders.
AddRange((new DirectoryInfo(s)).GetDirectories().
Where(d => d.Name.StartsWith("A")));
FilterSubFoldersStartA(@"c:\tempa");
FilterSubFoldersStartA(@"c:\tempb");
例B:
List<DirectoryInfo> subFolders = new List<DirectoryInfo>();
string filter = "A";
Action<string> FilterSubFoldersStartGen =
s => subFolders.
AddRange((new DirectoryInfo(s)).GetDirectories().
Where(d => d.Name.StartsWith(filter)));
FilterSubFoldersStartGen(@"c:\tempa");
filter = "B";
FilterSubFoldersStartGen(@"c:\tempb");
最初の例は 'subFolders'で終了するので、クロージャでもあります。 –
ああ、私は最初のラムダに気付かなかった。私はちょうど 'd => ... 'を見た。あなたが正しい。最初のファイルは 'subFolders'でクローズされ、2番目のファイルは' filter'でクローズされます。 – jalf