C #: лямбда, которая оценивает параметр при создании, а не при выполнении - PullRequest
1 голос
/ 01 июля 2019

Это код:

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

Проблема в том, что при выполнении Action он использует i из определенной области, и, поскольку я использую его для своего for,это всегда будет максимальное значение.В моем случае параметр становится 2, даже если лямбда была создана с 1.Чтобы обойти это, я сделал это:

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

Есть ли способ обойти этот уродливый трюк?Я хочу передать myFunc(0), myFunc(1) и т. Д., А не myFunc(i).

...