Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Func<>;-寻找解释,而不是解决方案_C# - Fatal编程技术网

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

C#Func<>;-寻找解释,而不是解决方案,c#,C#,我正在使用 在Math.net中,在我使用集成的其他方法中,我使用的集成函数定义为foloows: public static double IntegrateComposite( Func<double, double> f, double intervalBegin, double intervalEnd, int numberOfPartitions) 我的函数更好地定义为Func,而不是上面的Func,但一切正常 为什么?Func的意思是 一种函数,它接受1

我正在使用 在Math.net中,在我使用集成的其他方法中,我使用的集成函数定义为foloows:

public static double IntegrateComposite(
  Func<double, double> f,
  double intervalBegin,
  double intervalEnd,
  int numberOfPartitions)
我的函数更好地定义为
Func
,而不是上面的
Func
,但一切正常 为什么?

Func
的意思是

一种函数,它接受1个double-in类型的参数,并返回double


这正是箭头函数所做的,无论计算中涉及多少外部变量

这是您传入的函数,唯一的输入参数是tau

tau => MyFunction(r, tau, appCfg, Ta, Da) * ProbDensity(tau)
其他变量
r、appCfg、Ta、Da
由a“关闭”

Func
是一种表示方法的类型,该方法使用指定类型的(n)个参数(可以是0),并返回类型为
TResult
的对象

通过
Func
,它指定它必须是一个将一个
double
作为参数并返回一个
double
的方法

在本例中,使用了Lambda函数(也可以用Func表示)

tau=>{返回MyFunction(r,tau,appCfg,Ta,Da)*概率密度(tau)},
传递到lambda函数的唯一参数是
tau
,可以在箭头的左侧看到。其他变量,如
r
tau
appCfg
。。。是捕获的变量

通用委托的另一个示例:
(obj,e)=>{Console.WriteLine(obj)}
传递两个名为
obj
e
的变量。与您的示例不同,它不返回任何内容。这表示为
Action
,它表示一个不返回任何内容的方法。

通过“一切正常”您是否得到了相同的结果?或者你的意思是没有编译器错误?感谢所有愿意回答的好心人,这很有帮助,我知道我传递的唯一“真实”参数是Tau,“闭包”的概念和“捕获参数”的用法再次明确了实际参数和“支持角色/变量”之间的区别-谢谢
tau => MyFunction(r, tau, appCfg, Ta, Da) * ProbDensity(tau)