1. ホーム
  2. c#

[解決済み] C# 引数に関数を渡す【重複】について

2022-03-05 20:20:50

質問

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;
}

デリゲートで可能だと思うのですが(たぶん?

何かお手伝いいただけると助かります。

解決方法は?

上記のように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);
}