我可以從一個指定到一個動作(其預計返回類型爲void)拉姆達調用非void函數:分配給void delegate的lambdas放棄C#中的非void返回類型嗎?
static bool foo() { return true; }
...
// Action action = foo; // This gives a compile error though.
Action action =()=>foo(); // This compiles
起初,我注意到了這一點,而在尋找的List.ForEach()
一個例子。我可以從lambda執行一個非void函數並編譯它。
起初,這看起來是違反直覺的,並且讓我覺得你可以爲void
委託(無效行爲就像一種反變形)分配非無效函數,但Action action = foo;
不起作用。
所以現在我假設發生的事情是,lambda變成void,因爲這是期望的返回類型,所以它放棄了它所調用的非void函數的返回類型。那是對的嗎?
是的,這是有道理的。我想這只是數學上的符號'x => f(x)',乍一看使它看起來不符合直覺。謝謝。 – sashoalm