小编典典

C#将函数作为参数传递

all

我用 C# 编写了一个函数来进行数值微分。它看起来像这样:

public double Diff(double x)
{
    double h = 0.0000001;

    return (Function(x + h) - Function(x)) / h;
}

我希望能够传入任何函数,例如:

public double Diff(double x, function f)
{
    double h = 0.0000001;

    return (f(x + h) - f(x)) / h;
}

我认为代表可以做到这一点(也许?),但我不确定如何使用它们。


阅读 78

收藏
2022-09-02

共1个答案

小编典典

使用上面提到的 Func 是可行的,但也有代理执行相同的任务并在命名中定义意图:

public delegate double MyFunction(double x);

public double Diff(double x, MyFunction f)
{
    double h = 0.0000001;

    return (f(x + h) - f(x)) / h;
}

public double MyFunctionMethod(double x)
{
    // Can add more complicated logic here
    return x + 10;
}

public void Client()
{
    double result = Diff(1.234, x => x * 456.1234);
    double secondResult = Diff(2.345, MyFunctionMethod);
}
2022-09-02