如何创建这样的“f(a+;k*h)”的C#委托双可调用函数?

如何创建这样的“f(a+;k*h)”的C#委托双可调用函数?,c#,.net,.net-4.0,delegates,function-pointers,C#,.net,.net 4.0,Delegates,Function Pointers,我已经创建了一个公共委托double DynamicFunc(double x) 现在我尝试创建它的一个实例,以便稍后传递到组件中 private DynamicFunc f(double x) { return (return_ => x); } 但当我做类似的事情时: double value = 2 * f(50); private double f(double x) { return (return_ => x); }

我已经创建了一个
公共委托double DynamicFunc(double x)

现在我尝试创建它的一个实例,以便稍后传递到组件中

    private DynamicFunc f(double x)
    {
        return (return_ => x);
    }
但当我做类似的事情时:

double value = 2 * f(50);
private double f(double x)
{
    return (return_ => x);
}
I get:错误运算符“*”不能应用于“double”和“DynamicFunc”类型的操作数


为什么-我的deligate有什么问题?

函数返回一个委托(
DynamicFunc
)。您需要通过传递双参数来调用此委托,以获得结果:

double value = 2 * f(50)(20);

函数返回一个委托(
DynamicFunc
)。您需要通过传递双参数来调用此委托,以获得结果:

double value = 2 * f(50)(20);

使用任何类型的参数调用函数f都会返回动态函数,而不是可以在数学表达式中使用的值

private DynamicFunc f(double x)
{
    return (return_ => x);
}

double value = 2 * f(50)();
然而,你有没有考虑过这个选择?这样,您就不需要授权:

private Func<double> f(double x)
{
    return (() => return x;);
}

double value = 2 * f(50)();
private Func f(双x)
{
返回(()=>返回x;);
}
双值=2*f(50)();

使用任何类型的参数调用函数f都会返回一个动态函数,而不是可以在数学表达式中使用的值

private DynamicFunc f(double x)
{
    return (return_ => x);
}

double value = 2 * f(50)();
然而,你有没有考虑过这个选择?这样,您就不需要授权:

private Func<double> f(double x)
{
    return (() => return x;);
}

double value = 2 * f(50)();
private Func f(双x)
{
返回(()=>返回x;);
}
双值=2*f(50)();

尝试现有的Func委托:

Func<double, double> f = new Func<double, double>(x => x);
double value = 2 * f(50);
Func f=newfunc(x=>x);
双值=2*f(50);

尝试现有的Func委托:

Func<double, double> f = new Func<double, double>(x => x);
double value = 2 * f(50);
Func f=newfunc(x=>x);
双值=2*f(50);
因为f()声明为返回委托而不是双精度

您应该这样声明f:

double value = 2 * f(50);
private double f(double x)
{
    return (return_ => x);
}
然后在电话中:

private double SomeFunc(DyanmicFunc func)
{
    return 2 * func(50);
}
并称之为:

double result = SomeFunc(f);
因为f()声明为返回委托而不是双精度

您应该这样声明f:

double value = 2 * f(50);
private double f(double x)
{
    return (return_ => x);
}
然后在电话中:

private double SomeFunc(DyanmicFunc func)
{
    return 2 * func(50);
}
并称之为:

double result = SomeFunc(f);

乍一看,你似乎有一个错误的返回类型乍一看,你似乎有一个错误的返回类型