.NET object creation, whats faster?

后端 未结 4 615
醉酒成梦
醉酒成梦 2020-12-04 00:26

IS there a difference between those 2 ways of object creation?

new MyClass() { Id = 1, Code = \"Test\" };

or

MyClass c = ne         


        
4条回答
  •  北海茫月
    2020-12-04 00:29

    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
    

提交回复
热议问题