在循環控制結構內使用匿名方法的局部變量的用法
當處理循環控制結構時將局部變量封裝入類的數據成員有著有趣但危險的一面,讓我們看看下面代碼:
public class Program
{
public delegate void MyDelegate();
public static void Main(string[] args)
{
MyDelegate d = null;
for (int i = 1; i <= 5; i++)
{
MyDelegate tempD = delegate
{
Console.WriteLine(i);
};
d += tempD;
}
d();
}
}
上面的代碼運行時將會有什麼輸出呢?我們的意圖是捕獲在我們的匿名方法中的循環計數變量''i''並顯示之。我們預期的輸出應該如下所示:
1
2
3
4
5
但是如果你運行上面的代碼,輸出將是如下所示:
6
6
6
6
6