The brackets are called the parameter list of the anonymous method and in this case is empty. An anonymous method has no type - the compiler is trying to perform an implicit conversion. If an anonymous method is signed, it must match the signature of the delegate.
Implicit conversion is also possible if the following is true:
. , - . :
var x1 = new ParameterizedThreadStart(delegate(object o) {});
var x2 = new ParameterizedThreadStart(delegate {});
var x3 = new ParameterizedThreadStart(delegate() {});
, delegate(){} delegate{} . , MethodInvoker . . 21 # .