tbr*_*dge 11 c# lambda closures
我偶然发现了这篇文章并发现它非常有趣,所以我自己进行了一些测试:
测试一:
List<Action> actions = new List<Action>();
for (int i = 0; i < 5; ++i)
actions.Add(() => Console.WriteLine(i));
foreach (Action action in actions)
action();
Run Code Online (Sandbox Code Playgroud)
输出:
5
5
5
5
5
Run Code Online (Sandbox Code Playgroud)
测试二:
List<Action> actions = new List<Action>();
for (int i = 0; i < 5; ++i)
{
int j = i;
actions.Add(() => Console.WriteLine(j));
}
foreach (Action action in actions)
action();
Run Code Online (Sandbox Code Playgroud)
输出:
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
根据文章,在Test One中,所有lambdas都包含一个引用i,使得它们全部输出5.这是否意味着我在Test Two中得到了预期的结果,因为int为每个lambda表达式创建了一个new ?
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |