1
我有這樣的代碼:爲什麼c#編譯器不能解析三元運算符中的lambda表達式的參數類型?
Action<A, B> fnUpdate = (someBool) ? (a, b) => a.propOne = b : (a, b) => a.propTwo = d;
爲什麼編譯器無法解決的類型a
和b
,只是因爲它是在三元運營商分配?它的表面看來非常直截了當。
我有這樣的代碼:爲什麼c#編譯器不能解析三元運算符中的lambda表達式的參數類型?
Action<A, B> fnUpdate = (someBool) ? (a, b) => a.propOne = b : (a, b) => a.propTwo = d;
爲什麼編譯器無法解決的類型a
和b
,只是因爲它是在三元運營商分配?它的表面看來非常直截了當。
C#編譯器嘗試獨立創建lambda表達式,並且無法明確確定類型。因此,將它轉換爲預期的工作....
Action<A, B> fnUpdate = (someBool)
? (Action<A, B> (a, b) => a.propOne = b
: (Action<A, B> (a, b) => a.propTwo = d);
你需要轉換的兩個功能的至少一個:
Action<A, B> fnUpdate = someBool
? (Action<A, B>)((a, b) => a.propOne = b)
: (a, b) => a.propTwo = b;
嘗試過的功能加上括號 - 它有些模棱兩可。 –
不起作用 – 0xor1