TLDR;Почему это работает.
Queue<Action> queue = new Queue<Action>();
queue.Enqueue(() => Load("Scene01"));
Но не это.
Queue<Action> queue = new Queue<Action>();
queue.Enqueue(Load("Scene01"));
Я пытался создать простую систему загрузки, которая позволяла бы планировать несколько нагрузок.в то же время.Выяснилось, что было бы просто сохранить запрос как действие, которое затем добавляется в очередь, через которую проходит какая-то функция.
Используемая мной функция загрузки перегружена, и, следовательно, созданные действия будут отличаться друг от друга.Сначала я думал, что мне нужно будет создать какую-то общую систему, которая могла бы выполнять различные действия, но потом я нашел это.
Сохранение списка методов в C #
Вопрос Почему вы можете передать функцию, которая не соответствует действию, используя лямбда-выражение?
Queue<Action> queue = new Queue<Action>();
private void Load() { }
private void Load(string n) { }
private void QueueLoad()
{
// This match action signature.
queue.Enqueue(Load);
// This does not match, nor work.
queue.Enqueue(Load("Scene01"));
// Adding lambda expression and it works. Why?
queue.Enqueue(() => Load("Scene01"));
}