C#:lambda在创建时评估参数,而不是在执行时

时间:2019-07-01 10:57:18

标签: c# lambda parameters evaluation

这是代码:

pages[i][0] = create("[Back]", () => setMenu(pages[i - 1]));

问题是执行Action时,它将使用特定范围内的i,并且由于我将其用于for,因此它将始终是最大值。在我的情况下,即使lambda是使用2创建的,参数也变为1。为了解决这个问题,我做到了:

var forcedCopy = i - 1;
pages[i][0] = create("[Back]", () => setMenu(pages[forcedCopy]));

有什么办法可以解决这个丑陋的把戏?我想通过myFunc(0)myFunc(1)等,而不是myFunc(i)

0 个答案:

没有答案