首页 > 解决方案 > C#:在创建时评估参数的 lambda,而不是在执行时

问题描述

这是代码:

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

问题是,当Action执行时,它使用i来自特定范围的 ,并且由于我将它用于 my for,它将始终是最大值。在我的情况下,参数变为2,即使 lambda 是用1. 为了解决这个问题,我这样做了:

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

有没有办法绕过这个丑陋的把戏?我想通过myFunc(0),myFunc(1)等,而不是myFunc(i)

标签: c#lambdaparametersevaluation

解决方案


推荐阅读