Il costruttore, che la dichiarazione che hai postato chiamate un altro costruttore, in modo spiegarlo, dobbiamo prima guardare a firma del altro costruttore:
public DelegateCommand(Action<T> executeMethod, Func<T, bool> canExecuteMethod)
Così il secondo parametro è un Func<T, bool>
. Ciò significa che è una funzione che accetta un parametro di tipo T
e restituisce un valore booleano.
Ora, se si guarda al lambda che viene utilizzato:
(o) => true
lambda, in generale, avere la sintassi (parameter-list) => lambda-body
, quindi in questo caso, l'unico parametro della lambda è una variabile o
(che tipo è dedotto essere T
) e la funzione restituisce un risultato costante true
.
Lo scopo di questo è di eseguire fondamentalmente un comando sempre eseguibile.
Ovviamente lambda potrebbe sembrare molto più complicato, quindi quando si utilizza DelegateCommand è probabile che si utilizzino espressioni più complesse e non costanti. Per esempio:
new DelegateCommand(DoSomething, o => o.SomeProperty >= 0 && o.SomeProperty < 10 && o.SomeBoolProperty)
è solo un parametro di input a un predicato che non viene utilizzato - in questo caso il predicato restituisce sempre vero - ho il sospetto che sia un default nel caso in cui nessun predicato è passata in – BrokenGlass
questo [Tutorial]. (http://msdn.microsoft.com/en-us/library/vstudio/bb882516.aspx) ti aiuterà a capire i metodi anonimi e lambda. BTW è solo un parametro di input. –