Conversões lambda com tipo de retorno pouco claro e resolução de sobrecarga [duplicado]

Esta questão já tem uma resposta aqui:

Resolução de sobrecarga peculiar com while (true) 1 resposta

Se eu tiver um lambda como() => { throw new Exception(); }, não está claro se tem um tipo de retorno ou não. Por causa disso, ele pode ser (implicitamente) convertido emAction eFunc<object> (ou qualquer outroFunc<T>). Isso porque, de acordo com o §6.5Conversões de função anônima da especificação C # 4:

[A] tipo de delegadoD é compatível com uma função anônimaF forneceu:

E seD tem umvoid tipo de retorno e o corpo deF é um bloco de declaração, quando […] o corpo deF é um bloco de instrução válido no qual nenhuma instrução de retorno especifica uma expressão.

E seD tem um tipo de retorno não nulo e o corpo deF é um bloco de declaração, quando […] o corpo deF é um bloco de instrução válido com um ponto final não alcançável em que cadareturn instrução especifica uma expressão que é implicitamente conversível para o tipo de retornoD.

Mas se eu tenho duas sobrecargas de um método, onde se tem um parâmetro do tipoAction e o outroFunc<object>, e eu passo o lambda de cima, oFunc<object> sobrecarga é usada. Por quê? Qual parte da especificação diz queFunc<object> é melhor queAction nesse caso?

Eu olhei para §7.5.3.2Melhor membro de função, mas isso não explica isso.

questionAnswers(1)

yourAnswerToTheQuestion