C# 简写lambda表达式
只是一个一般性的问题。。。我很喜欢用正手版本,但从学术角度来看,我很好奇 为什么要速记?:不编译。它不知道如何将lambda表达式转换为lambda表达式C# 简写lambda表达式,c#,linq,lambda,expression,C#,Linq,Lambda,Expression,只是一个一般性的问题。。。我很喜欢用正手版本,但从学术角度来看,我很好奇 为什么要速记?:不编译。它不知道如何将lambda表达式转换为lambda表达式 Func<int> idProp = (personIdProperty == null) ? () => Person.UserAccountId : () => Person.Id; Func idProp=(person
Func<int> idProp = (personIdProperty == null) ?
() => Person.UserAccountId :
() => Person.Id;
Func idProp=(personIdProperty==null)?
()=>Person.UserAccountId:
()=>Person.Id;
然而,当我把它转换成正手时,它工作得很好
Func<int> idProp;
if (personIdProperty == null)
idProp = () => Person.UserAccountId;
else
idProp = () => Person.Id;
Func-idProp;
if(personIdProperty==null)
idProp=()=>Person.UserAccountId;
其他的
idProp=()=>Person.Id;
提前感谢。我以前从未尝试过,但是是的,lambda可以是许多不同的类型,如果您显式地强制转换结果,那么它就会工作
Func<int> idProp = (personIdProperty == null) ?
(Func<int>) (() => Person.UserAccountId):
(() => Person.Id);
Func idProp=(personIdProperty==null)?
(Func)(()=>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;
}
var idProp=(personIdProperty==null)?
Func(()=>Person.UserAccountId):
Func(()=>Person.Id);
//...
私有函数Func(Func f)
{
返回f;
}
请格式化您的代码,使您的文章更具可读性。