new {...} always creates an anonymous object, for instance:
Object sample = new {};
String sampleName = sample.GetType().Name; // <- something like "<>f__AnonymousType0"
// not "Object"
while new Object() creates an instance of Object class
Object sample = new Object() {};
String sampleName = sample.GetType().Name; // <- "Object"
since all objects (including anonymous ones) are derived from Object you can always type
Object sample = new {};