Given a func that takes N parameters, why is it possible to assign a delegate to it that doesn't explicitly declare any parameters? e.g.
Func<int, string, object, string, bool> test;
// (1) this makes sense to me
test= delegate (int a, string b, object c, string d) { return true; };
// (2) this also makes sense to me
test= (a,b,c,d)=>true;
// (3) why does this work?
test = delegate { return true; };
Why does (3) work? Is there any difference between (1), (2), and (3)? Can we access the parameters from inside the braces of the third variation?