No se puede asignar un delegado de un tipo a otro aunque la firma coincida

Mi morbosa curiosidad me hace preguntarme por qué falla lo siguiente:

// declared somewhere
public delegate int BinaryOperation(int a, int b);

// ... in a method body
Func<int, int, int> addThem = (x, y) => x + y;

BinaryOperation b1 = addThem; // doesn't compile, and casting doesn't compile
BinaryOperation b2 = (x, y) => x + y; // compiles!

Respuestas a la pregunta(2)

Su respuesta a la pregunta