有一个函数作为参数

时间:2011-09-06 23:20:10

标签: c# function

我正在尝试创建一个新的Timers类来帮助我学习c#。我如何让函数的参数成为函数?

2 个答案:

答案 0 :(得分:6)

这很简单。只需将参数设置为某种delegate类型,例如ActionFunc

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), ...)