[英]C# Func<> - looking for an explanation - not a solution
我正在使用Math.net,我使用集成的其他方法,我使用的集成函数定义为foloows:
public static double IntegrateComposite(
Func<double, double> f,
double intervalBegin,
double intervalEnd,
int numberOfPartitions)
然而,我的调用语法是:
p = IntegrateComposite(
tau => MyFunction(r, tau, appCfg, Ta, Da) * ProbDensity(tau),
lowLim, hiLim, 32)
我的函数更好地定义为Func<double, double, double, double, double, double>
而不是上面的Func<double, double>
,仍然一切正常为什么?
这是你传入的函数,唯一的输入参数是tau。
tau => MyFunction(r, tau, appCfg, Ta, Da) * ProbDensity(tau)
其他变量r, appCfg, Ta, Da
由闭包 “封闭”
Func<double, double>
表示
取一个double类型参数的函数,返回double
这正是你的箭头函数所做的,无论计算中涉及多少外部变量。
Func<T1, T2, T3..., T(n), TResult>
是一种类型,表示采用(n)具有指定类型的参数(可以是0)的方法,并返回TResult
类型的对象。
通过Func<double, double>
,它指定它必须是一个方法,它将一个double
作为参数并返回一个double
。
在此示例中,使用Lambda函数(也可以由Func表示)。
tau => {return MyFunction(r, tau, appCfg, Ta, Da) * ProbDensity(tau)},
传递给lambda函数的唯一参数是tau
,可以在箭头的左侧看到。 其他变量如r
, tau
, appCfg
...是捕获的变量。
泛型委托的另一个例子: (obj, e) => {Console.WriteLine(obj)}
传递两个名为obj
和e
变量。 与您的示例不同,它什么都不返回。 这表示为Action<T1, T2>
,表示不返回任何内容的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.