[英]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.