1
这段代码不容易阅读,对不起,但为了我的兴趣,为什么编译器必须知道lambda的类型。让我们看看代码,不用担心,它不是真正的代码。为什么编译器必须知道一个lambda的类型?
bool b1 = true, b2, b3;
Action action =() => Console.WriteLine("Hello");
(b1 ?() =>
{
b2 = true;
b3 = false;
} : action)();
这很有效。但是...
为什么我不能这样做?
bool b1 = true, b2, b3;
(b1 ?() =>
{
b2 = true;
b3 = false;
} :() => Console.WriteLine("Hello"))();
能否请你解释一下,在这种情况下,编译器必须知道明确的类型的函数(在这种情况下Action
)?
VS2017告诉我....不能确定
条件表达式CS0173类型,因为 有 'lambda表达式' 和 'lambda表达式'
作为结果得到什么?如果这是一个编译器错误,你应该提及它 –
我错了吗?或者'()=> {}'也可以是'Func <>'? (我认为可能是什么原因) –