1
對於需要爲自己的AI編碼的遊戲,我需要使用參數排隊各種方法調用。例如:使用參數排隊各種方法調用
MessageReceived(string text, Source source);
MiningCompleted(ResourceData data);
這做,調用所有事件在遊戲的下一個步驟的開端,而不是瞬間。 現在我已經寫了參數傳遞給方法的小證明的概念:
namespace LambdaTest
{
class Program
{
static void Main(string[] args)
{
Queue<Action> q = new Queue<Action>();
for (int i = 0; i < 5; i++)
{
q.Enqueue(new Action(() => {
// Methods should be called here
Console.WriteLine(i);
}));
}
foreach (Action a in q)
a();
Console.ReadLine();
}
}
}
首先想到的是它的工作。 看到5x5的輸出後,我的問題是,爲什麼它不輸出0到4,爲什麼它實際上工作,因爲i
不再存在於此範圍內。
- 爲什麼輸出5x5?
- 我該如何使用參數排隊不同的方法調用?
這是什麼都與LINQ呢? (基本上,你看到的是'i'的生命週期被延長,直到所有捕獲它的匿名函數都有資格進行垃圾回收。) –
Is not()=> {} linq? – Steven
不,它是lambda表達式 - 與LINQ同時引入,在* LINQ中大量使用*,但它本身不是LINQ的一部分。 –