繁体   English   中英

C#Func <> - 寻找解释 - 不是解决方案

[英]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 ,可以在箭头的左侧看到。 其他变量如rtauappCfg ...是捕获的变量。

泛型委托的另一个例子: (obj, e) => {Console.WriteLine(obj)}传递两个名为obje变量。 与您的示例不同,它什么都不返回。 这表示为Action<T1, T2> ,表示不返回任何内容的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM