【问题标题】:Using condition expression to choose lambda expression使用条件表达式选择 lambda 表达式
【发布时间】:2016-09-05 05:26:48
【问题描述】:

我想用条件表达式来选择 lambda 表达式,像这样:

xxxx.UsingFactory(
hasProofing? ( ()=>new ProofingA() ) : ( () => new ProofingB() )
);

但是,它显示了错误。那么,如果我想做这件事,我该怎么做。

错误详情:

“lambda 表达式”和“lambda”之间没有隐式转换 表达'

【问题讨论】:

  • show me errors .. 如果您说明这些错误,这将非常有帮助。另外,显示UsingFactory 的签名,它接受什么作为参数? ProofingAProofingB 是否继承自同一个对象?
  • 从同一个界面实现
  • 另外,xxx.UsingFactory() 的参数是什么?可能它不采取没有参数的动作?试试x=>new ProfingA()
  • 你必须明确地转换你的 lambdas。见this问题,或者theseones
  • @v11 你的方法接受Func<iThatComonInterface> 还是接受什么?只是一个Action ?

标签: c#


【解决方案1】:

您需要显式转换至少一个 lambda。例如,如果它只是一个Action,那么您可以使用以下内容:

xxxx.UsingFactory(
    hasProofing ? (Action)(() => new ProofingA()) : () => new ProofingB()
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多