繁体   English   中英

速记lambda表达式[重复]

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

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