У меня немного проблемы с обратным вызовом и для цикла, сказать, у меня есть этот кодC# integer передается как ссылка в обратном вызове?
public void DoSth(Action<QueryTextureResult> result, IEnumerable<string> arr)
{
int totalData = 0;
foreach (var element in arr) // let's say arr.Count() is 10
{
Action<Texture> onImageReceived = (texture) =>
{
if (result != null)
{
var res = new QueryTextureResult()
{
Texture = texture,
QueryId = queryId,
Index = totalData // why this one is always 10 if the callback takes time?
};
result(res);
Debug.Log("INdex: " + res.Index);
}
};
imageManager.GetImage("http://image.url", onImageReceived);
totalData++;
}
}
Как написано в комментариях, если у меня есть 10 элементов, требуется время для result
называться, почему QueryTextureResult.Index
, который я получил, всегда будет 10? Передано ли оно по ссылке? любой способ исправить это?
Переменная захвачена, все они имеют одинаковый адрес памяти. –