我知道Func<>
s不能被隐式地直接通过var
关键字打字,虽然我很希望,我可以做谓语的分配如下:如何使用条件三元运算符分配Func <>?
Func<Something, bool> filter = (someBooleanExpressionHere)
? x => x.SomeProp < 5
: x => x.SomeProp >= 5;
但是,我得到的错误cannot resolve the symbol, 'SomeProp'
目前,我已经采取了更繁琐的if branch
任务,这似乎并不优雅。
Func<Something, bool> filter;
if (someBooleanExpressionHere)
{
filter = x => x.SomeProp < 5;
}
else
{
filter = x => x.SomeProp >= 5;
}
我错过了什么,或者我是否需要坚持if-branch任务?
您是否尝试过在各处添加括号?例如'(x => x.SomeProp <5)' – 2014-09-04 14:14:48
编译器可能不知道lambda变量x是什么类型。为什么不把这两个表达式放在单独的变量中,然后使用三元运算符将其中的一个赋值给过滤变量? – 2014-09-04 14:15:16
@AlexMDC:有。不起作用。 – 2014-09-04 14:29:25