我看到PRISM聲明下面的構造,我不知道那是什麼「O」被與作爲當基類的構造被稱爲第二個參數的lambda函數使用:lambda函數使用未知參數
public DelegateCommand(Action<T> executeMethod)
: this(executeMethod, (o)=>true)
{
}
我很感激一個解釋。
我看到PRISM聲明下面的構造,我不知道那是什麼「O」被與作爲當基類的構造被稱爲第二個參數的lambda函數使用:lambda函數使用未知參數
public DelegateCommand(Action<T> executeMethod)
: this(executeMethod, (o)=>true)
{
}
我很感激一個解釋。
它調用此構造函數:
DelegateCommand<T>(Action<T>, Func<T, Boolean>)
傳遞一個lambda,它總是返回作爲第二個參數
您發佈調用,聲明另一個構造函數構造真實的,所以要解釋一下,我們應該先看看在另一個構造函數的簽名:
public DelegateCommand(Action<T> executeMethod, Func<T, bool> canExecuteMethod)
所以第二個參數是一個Func<T, bool>
。這意味着它是一個函數,它採用T
類型的參數並返回一個布爾值。
現在,如果你看一下所使用的拉姆達:
(o) => true
lambda表達式一般有語法(parameter-list) => lambda-body
,所以在這種情況下,拉姆達的一個參數是一個變量o
(哪種類型推斷爲T
),該函數返回一個常數結果true
。
這樣做的目的是基本上生成一個始終可執行的命令。
當然,lambda可能看起來更加複雜,因此使用DelegateCommand時,可能會使用更復雜和非常量的表達式。例如:
new DelegateCommand(DoSomething, o => o.SomeProperty >= 0 && o.SomeProperty < 10 && o.SomeBoolProperty)
我知道lambda函數是什麼,熟悉PRISM和這個基礎構造函數(只要命令始終是activa就可以使用)。我剛纔問了關於SYNTAX。你回答說:「在這種情況下,lambda的單個參數是變量o(哪種類型被推斷爲T)」,但我仍然不明白爲什麼「o」,因爲單個參數已經被賦予名稱爲「executeMethod」。提前致謝! – Ofer
@Ofer整個表達式'(o)=> true'的類型爲'Func
它只是一個輸入參數未使用的謂語 - 在這種情況下,謂詞總是返回true - 我懷疑是在情況下,默認的無謂語是通過 – BrokenGlass
本[教程]。 (http://msdn.microsoft.com/en-us/library/vstudio/bb882516.aspx)將幫助您瞭解匿名方法和lambda。順便說一句,它只是一個輸入參數。 –