我正在查看here
中的代码/// <summary>
/// Returns the command that, when invoked, attempts
/// to remove this workspace from the user interface.
/// </summary>
public ICommand CloseCommand
{
get
{
if (_closeCommand == null)
_closeCommand = new RelayCommand(param => this.OnRequestClose());
return _closeCommand;
}
}
param
中的param => this.OnRequestClose()
指的是什么?
答案 0 :(得分:16)
RelayCommand
可能是一个委托类型,它接受一个参数,或本身在构造函数中采用这种委托类型的类型。你正在声明一个匿名方法,简单地说“在调用时,我们将获取传入的值(但不使用它),并调用OnRequestClose
。你也可以(可能更清楚):
_closeCommand = new RelayCommand(delegate { this.OnRequestClose(); });
在使用 的其他用途中可能更清楚,例如:
var ordered = qry.OrderBy(item => item.SomeValue);
其中lambda是“给定item
”,获取item
的{{1}}“。在您的情况下,lambda是“给定SomeValue
,忽略param
并致电param
”
答案 1 :(得分:1)
param =&gt; this.OnRequestClose()是lambda
Func<sometype_that_param_is,sometype_that_OnRequestClose_Is>
或 操作
我不确定哪个
所以它只是一个由某个东西调用的func的表达式,它将传递一个参数,该参数将是'param'然后不使用
答案 2 :(得分:1)
无。该行定义了表示函数的lambda表达式。该函数具有如下签名:Foo(T param),其中T将是编译器根据被调用的构造函数的类型所引入的特定类型。
答案 3 :(得分:1)
param是lambda表达式的唯一参数(param =&gt; this.OnRequestClose())
在实例化ICommand对象时,param可能包含从UI传递给此ICommand的参数。在您的情况下,该参数未在命令中使用(它不会出现在lambda表达式的右侧)。