使用未知参数的 lambda 函数

本文关键字:lambda 函数 参数 未知 | 更新日期: 2023-09-27 18:31:32

我看到PRISM声明了以下构造函数,我不明白当调用基本构造函数时用作第二个参数的lambda函数一起使用的"o"是什么:

public DelegateCommand(Action<T> executeMethod)
    : this(executeMethod, (o)=>true)
{            
}

我希望得到解释。

使用未知参数的 lambda 函数

您发布的声明的构造函数调用另一个构造函数,因此为了解释它,我们应该首先查看另一个构造函数的签名:

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