簡體   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