簡體   English   中英

Lambda函數使用未知參數

[英]Lambda Function Using Unknown Parameter

我看到PRISM聲明了以下構造函數,我不明白當調用基本構造函數時,作為第二個參數的lambda函數使用的“o”是什么:

public DelegateCommand(Action<T> executeMethod)
    : this(executeMethod, (o)=>true)
{            
}

我很感激解釋。

你發布的聲明的構造函數調用另一個構造函數,所以為了解釋它,我們首先應該看看其他構造函數的簽名:

public DelegateCommand(Action<T> executeMethod, Func<T, bool> canExecuteMethod)

所以第二個參數是Func<T, bool> 這意味着它是一個函數,它接受類型為T的參數並返回一個布爾值。

現在,如果你看一下使用的lambda:

(o) => true

Lambda通常具有語法(parameter-list) => lambda-body ,因此在這種情況下,lambda的單個參數是變量o (該類型被推斷為T ),並且函數返回常量結果true

這樣做的目的是基本上創建一個始終可執行的命令。

當然,lambda看起來要復雜得多,所以在使用DelegateCommand時,你可能會使用更復雜和非常量的表達式。 例如:

 new DelegateCommand(DoSomething, o => o.SomeProperty >= 0 && o.SomeProperty < 10 && o.SomeBoolProperty)

它調用這個構造函數:

DelegateCommand<T>(Action<T>, Func<T, Boolean>)

傳遞總是返回true的lambda作為第二個參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM