You are missing fact that:
Func<int> f = () => { return 123; };
Delegate t = f;
is in fact using constructor:
Func<int> f = new Func<int>(() => { return 123; });
But there is no Delegate constructor taking lambda expression or implicit conversion between them.