IS there a difference between those 2 ways of object creation?
new MyClass() { Id = 1, Code = \"Test\" };
or
MyClass c = ne
To illustrate M Skeet's code, here's the IL (note the additional ldloc stloc for method #1)
IL_0001: newobj instance void ConsoleApplication1.Program/MyClass::.ctor()
IL_0006: stloc.2
IL_0007: ldloc.2
IL_0008: ldc.i4.1
IL_0009: callvirt instance void ConsoleApplication1.Program/MyClass::set_Id(int32)
IL_000e: nop
IL_000f: ldloc.2
IL_0010: ldstr "Test"
IL_0015: callvirt instance void ConsoleApplication1.Program/MyClass::set_Code(string)
IL_001a: nop
IL_001b: ldloc.2
IL_001c: stloc.0
IL_001d: newobj instance void ConsoleApplication1.Program/MyClass::.ctor()
IL_0022: stloc.1
IL_0023: ldloc.1
IL_0024: ldc.i4.1
IL_0025: callvirt instance void ConsoleApplication1.Program/MyClass::set_Id(int32)
IL_002a: nop
IL_002b: ldloc.1
IL_002c: ldstr "Test"
IL_0031: callvirt instance void ConsoleApplication1.Program/MyClass::set_Code(string)
IL_0036: nop