如何创建这样的“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);
乍一看,你似乎有一个错误的返回类型乍一看,你似乎有一个错误的返回类型