1
独自のAIをコーディングする必要のあるゲームでは、パラメータを使用してさまざまなメソッド呼び出しをエンキューする必要があります。例:パラメータを使用してさまざまなメソッド呼び出しをエンキューする
これは、ゲームの次のステップの冒頭ですべてのイベントを呼び出すのではなく、即座に呼び出す必要があります。 は、今私は小さながメソッドにパラメータを渡すためのコンセプトの証明書かれています:
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
いいえ、それはLINQと同時に導入され、* LINQ内で頻繁に使用されるラムダ式ですが、それ自体はLINQの一部ではありません。 –