я могу назвать непустую функцию от лямбда, который назначен на действия (который ожидает пустой типа возвращаемого значения):Нужно ли lambdas назначать void делегату отказаться от невостребованного типа возврата в C#?
static bool foo() { return true; }
...
// Action action = foo; // This gives a compile error though.
Action action =()=>foo(); // This compiles
Сначала я заметил это, глядя на примере List.ForEach()
. Я мог бы выполнить функцию non-void из лямбды и скомпилировать ее.
Вначале это казалось противоречивым и заставило меня думать, что вы можете назначить непустые функции делегату void
(void действует как своего рода контравариантный), но Action action = foo;
не работает.
Итак, теперь я предполагаю, что происходит то, что лямбда становится недействительной, потому что это ожидаемый тип возвращаемого значения, поэтому он отбрасывает возвращаемый тип не-void-функции, которую он вызывает. Это верно?
Да, это имеет смысл. Я предполагаю, что это было просто математическое обозначение 'x => f (x)', что заставляет его выглядеть на первый взгляд интуитивно понятным. Благодарю. – sashoalm