[英]Shorthand lambda expression [duplicate]
这个问题已经在这里有了答案:
一般而言,这只是一个问题...我可以使用普通版本,但从学术角度来看,我很好奇...
为什么简写?:不编译。 它不知道如何将lambda表达式转换为lambda表达式。
Func<int> idProp = (personIdProperty == null) ?
() => Person.UserAccountId :
() => Person.Id;
但是,当我长期使用它时,它就可以正常工作。
Func<int> idProp;
if (personIdProperty == null)
idProp = () => Person.UserAccountId;
else
idProp = () => Person.Id;
提前致谢。
我之前从未尝试过,但是是的,lambda可以是许多不同的类型,如果您显式转换结果,那么它将起作用。
Func<int> idProp = (personIdProperty == null) ?
(Func<int>) (() => Person.UserAccountId):
(() => Person.Id);
为了在这种情况下进行推理,您可以通过函数传递Func。 这样,您甚至可以省略Func的显式类型定义:
var idProp = (personIdProperty == null) ?
Func(() => Person.UserAccountId) :
Func(() => Person.Id);
//...
private Func<T1> Func<T1>(Func<T1> f)
{
return f;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.