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 {};