我正在尝试创建一个新的Timers类来帮助我学习c#。我如何让函数的参数成为函数?
答案 0 :(得分:6)
这很简单。只需将参数设置为某种delegate
类型,例如Action
或Func
。
void PassAnAction(Action action)
{
action(); // call the action
}
T PassAFunction<T>(Func<T> function)
{
return function();
}
答案 1 :(得分:1)
public class MyTimer {
private readonly Action _fireOnInterval;
public MyTimer(Action fireOnInterval, TimeSpan interval, ...) {
if (fireOnInterval == null) {
throw new ArgumentNullException("fireOnInterval");
}
_fireOnInterval = fireOnInterval;
}
private void Fire() {
_fireOnInterval();
}
...
}
您可以这样称呼它:
new MyTimer(() => MessageBox.Show("Elapsed"), TimeSpan.FromMinutes(5), ...)