http://msdn.microsoft.com/en-us/library/bb763133.aspx
Module Module1
Sub Main()
Dim array1 As Func(Of Integer)() = New Func(Of Integer)(4) {}
For i As Integer = 0 To 4
array1(i) = Function() i
Next
For Each funcElement In array1
System.Console.WriteLine(funcElement())
Next
End Sub
End Module
它表示结果总是5,即i的最终值。怎么样?
他们没有将迭代变量放在“闭包”中吗?
答案 0 :(得分:4)
出现此问题是因为lambda表达式在构造时不会执行,而是在调用它们时执行。
请参阅以下链接: http://blogs.msdn.com/b/vbteam/archive/2007/07/26/closures-in-vb-part-5-looping.aspx
希望它有所帮助。