[英]Is this proper way to pass parameters?
阅读此文章中,我发现了一个奇怪的方式来传递参数给对象:
_saveProductCommand = new RelayCommand(
param => SaveProduct(),
param => (CurrentProduct != null)
这是输入错误还是传递参数的正确方法?
您所看到的不是适用于常规属性的内容,例如,如果参数是字符串,则您将无法使用name => statement
语法。
如果查看RelayCommand的定义,则会看到参数的类型为Action
这是一种特殊类型,它允许您将代码或方法块作为对象传递,这些通常称为Delegates。
您所指的语法称为Lambda
,它们以几种形式出现。
最简单的是() => doSomething()
在这种情况下,lambda不接受任何参数,仅调用doSomething
方法。
下一个是在此代码中带有参数param => doSomething(param)
的lambda,变量param
只是该lambda的代码主体可以使用的局部变量,执行lambda的代码将需要传递一些东西,这是一个更完整的示例;
var myLambda = param => doSomething(param);
myLambda("some string value");
因此,在此示例中,字符串将传递给doSomething
方法。
这些示例仅涵盖了将转换为Action
类的lambda,但是您也可以编写一个lambda来为您提供Func
。 还有另一种称为Predicate
形式,它本质上是一个返回true或false的Action;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.