将值传递给匿名函数

时间:2016-03-24 20:31:21

标签: c# unity3d

我有以下电话:

GameSmart.HighScores.Load(Order.Descending, (HighScoresLoadedResponse response) => {
    foreach(Score score in response.data.scores){
        GameSmart.GetImage(score.avatar, (Sprite sprite) => {
            print(score.score);
        });
    }
});

在我的foreach中,我可以以某种方式将score的值传递给在执行匿名函数时使用的匿名函数吗?我现在每次匿名函数执行时都会显示Score数组中的最后一个值。

以下是GetImage

的定义
public static void GetImage(string url, Action<Sprite> onComplete = null)

2 个答案:

答案 0 :(得分:3)

我现在无法测试,但我相信这应该有效:

GameSmart.HighScores.Load(Order.Descending, (HighScoresLoadedResponse response) => {
    foreach(Score score in response.data.scores){
        var scoreRef = score;
        GameSmart.GetImage(score.avatar, (Sprite sprite) => {
            print(scoreRef.score);
        });
    }
});

答案 1 :(得分:1)

您需要在5.0之前的C#版本中将得分复制到foreach循环内的局部变量。有关设计更改Is there a reason for C#'s reuse of the variable in a foreach?

的说明,请参阅此问题