Я знаю, что в javascript я могу передать имя функции и массив варов, а затем выполнить эту функцию с этими варами в произвольный момент позже ,Есть ли способ сохранить и затем выполнить произвольный вызов функции
Это облегчает то, что все в основном одно и то же. В C# существует также var, но похоже, что тип определяется в зависимости от того, что вы помещаете в него.
То, что я пытаюсь сделать это, чтобы сказать:
взять функцию и параметры: Foo (bar1, bar2 ... Barn)
и выполнять их в течение 5 секунд.
Я использую Unity, поэтому часть синхронизации проста, но я не могу понять, как передать функцию и указать произвольные возможные параметры произвольных типов.
псевдо-код:
class myTimerClass{
functionHandle myFunction;
var params;
float startTime, delayTime;
bool pending = false;
public myTimerClass(functionHandle myFunction, var params, float delay){
this.myFunction = myFunction;
this.params = params;
this.delay = delay;
this.startTime = System.currentTime;
pending = true;
}
public void update(){
if(System.currentTime>=startTime+delay && pending){
pending = false;
INVOKE(myFunction,params);
}
}
}
<something calls the update() every frame>
Я прочитал на действия и FUNC <> и делегатов, но не кажется, что должен быть способ для обработки произвольной функции с произвольным Params.
Возможный дубликат [C# с задержкой вызова функций] (http://stackoverflow.com/ques/545533/c-sharp-delay-function-calls) –
Просто используйте наиболее общий тип функции 'Делегат', а затем его метод' Invoke'. –
Посмотрите на третий ответ, а не на принятый. Вам не нужно 'bar()', вы можете сделать все это в лямбда. IMHO очень похож на JavaScript, где setTimeout() также использует таймер. –