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