我知道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