c# - 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)
。
解决方案
推荐阅读
- reactjs - 在表格中找到您单击的行
- java - Gradle - 来自单个项目的多个 Jar
- swift - Swift 发送“地图”作为查询参数
- java - 使用 Retrofit2 for android 解析字符串数组
- sql - 从字符串序列中搜索的 SQL 查询
- zabbix - Zabbix Agent 3.4.9 Active Monitoring Log file, Not supported: too many parameters
- c# - 在第一次记录水晶报告中显示总和
- c# - 如何在部署管道中正确配置数据库和集合?
- azure-service-fabric - Service Fabric 规模集上的存储空间不足
- c++ - 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书