欢迎来到闭包和捕获变量的世界:)
埃里克·利珀特(Eric Lippert)对这种行为有深入的解释:
- 关闭循环变量被认为是有害的
- 关闭循环变量,第二部分
基本上,捕获的是循环变量,而不是值。要获得您认为应该获得的东西,请执行以下操作:
foreach (var type in types){ var newType = type; var sayHello = new PrintHelloType(greeting => SayGreetingToType(newType, greeting)); helloMethods.Add(sayHello);}


