Der Konstruktor, die Deklaration von Anrufen anderen Konstruktor geschrieben, so ist es zu erklären, sollten wir zuerst schauen bei der Unterschrift des anderen Konstruktor:
public DelegateCommand(Action<T> executeMethod, Func<T, bool> canExecuteMethod)
So ist der zweite Parameter ist ein Func<T, bool>
. Das bedeutet, dass es sich um eine Funktion handelt, die einen Parameter vom Typ T
akzeptiert und einen booleschen Wert zurückgibt.
Nun, wenn Sie an dem Lambda aussehen, die verwendet wird:
(o) => true
Lambdas im Allgemeinen hat die Syntax (parameter-list) => lambda-body
, so dass in diesem Fall die einzelnen Parameter des Lambdas eine Variable o
ist (welcher Typ abgeleitete ist zu sein T
) und die Funktion gibt ein konstantes Ergebnis true
zurück.
Der Zweck davon ist, grundsätzlich einen Befehl zu machen, der immer ausführbar ist.
Natürlich könnte Lambda viel komplizierter aussehen, wenn Sie den DelegateCommand verwenden, werden Sie wahrscheinlich komplexere und nicht konstante Ausdrücke verwenden. Zum Beispiel:
new DelegateCommand(DoSomething, o => o.SomeProperty >= 0 && o.SomeProperty < 10 && o.SomeBoolProperty)
es ist nur ein Eingabeparameter auf ein Prädikat, das nicht verwendet wird - in diesem Fall das Prädikat immer true zurück - ich vermute, ist ein Standard für den Fall ist kein Prädikat in geben – BrokenGlass
dieses [Tutorial]. (http://msdn.microsoft.com/en-us/library/vstudio/bb882516.aspx) wird Ihnen helfen, anonyme Methoden und Lambda zu verstehen. BTW ist nur ein Eingabeparameter. –