使用未知参数的 lambda 函数
本文关键字:lambda 函数 参数 未知 | 更新日期: 2023-09-27 18:31:32
我看到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
Lambdas一般有语法(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