我有一个带有以下代码的简单应用程序:
FileInfo[] files = (new DirectoryInfo(initialDirectory)).GetFiles();
List<Thread> threads = new List<Thread>(files.Length);
foreach (FileInfo f in files)
{
Thread t = new Thread(delegate()
{
Console.WriteLine(f.FullName);
});
threads.Add(t);
}
foreach (Thread t in threads)
t.Start();
假设在 'I=initialDirectory' 目录中我有 3 个文件。然后这个应用程序应该创建 3 个线程,每个线程打印一个文件名;然而,每个线程将打印出“文件”数组中最后一个文件的名称。
为什么是这样?为什么当前文件“f”变量没有在匿名方法中正确设置?