繁体   English   中英

这是传递参数的正确方法吗?

[英]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;

我建议对Action类, Func类和Predicate类进行更多阅读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM