阅读this文章中,我发现了一个奇怪的方式来传递参数给对象:这是传递参数的正确方法吗?
_saveProductCommand = new RelayCommand(
param => SaveProduct(),
param => (CurrentProduct != null)
这是错字或传递参数正确方法?
阅读this文章中,我发现了一个奇怪的方式来传递参数给对象:这是传递参数的正确方法吗?
_saveProductCommand = new RelayCommand(
param => SaveProduct(),
param => (CurrentProduct != null)
这是错字或传递参数正确方法?
你所看到的并不是适用于一般属性的东西,例如,如果参数是一个字符串,你将无法使用name => statement
语法。
如果你看看RelayCommand的定义,你会看到参数的类型为Action
这是一种特殊的类型,它允许你将代码或方法块作为对象传递,这些通常称为代理。
您提到的语法称为Lambda
,它们有几种形式。
最简单的是() => doSomething()
在这种情况下,lambda不采用任何参数,只调用doSomething
方法。
接下来是一个在此代码中采用参数param => doSomething(param)
的lambda,变量param
仅仅是lambda的代码体的局部变量,可以使用,并且执行lambda的代码需要传递一些东西在这里,这是一个更完整的例子;
var myLambda = param => doSomething(param);
myLambda("some string value");
所以在这个例子中,字符串将被传递给doSomething
方法。
这些示例仅涵盖了lambda,它将转换为Action
类,但您也可以编写一个lambda来给您一个Func
。还有另一种形式叫Predicate
这实质上是一个返回true或false的Action;
它是中继命令它通过这种方式 –
它是如果参数是委托或表达式,这意味着您可以传递lambdas。 – juharr
请参阅:https://msdn.microsoft.com/en-us/library/bb397687.aspx –