.assembly '4darray2' { } .assembly extern 'mscorlib' { .ver 1:0:5000:0 .publickeytoken = ( b7 7a 5c 56 19 34 e0 89 ) } .class sealed 'X' extends [mscorlib]System.ValueType { .field public int32 'a' .field public int32 'b' .method hidebysig specialname rtspecialname public void .ctor(int32 'a',int32 'b') { ldarg.0 ldarg 1 // a stfld int32 'X'::'a' ldarg.0 ldarg 2 // b stfld int32 'X'::'b' ret .maxstack 2 } // end of constructor X.X } // end of struct X .class 'T' extends [mscorlib]System.Object { .method hidebysig static public void 'print'(value class 'X' 'x') { ldstr "({0},{1})" ldarga 0 // x ldfld int32 'X'::'a' box int32 ldarga 0 // x ldfld int32 'X'::'b' box int32 call void [mscorlib]System.Console::'WriteLine'(string,object,object) ret .maxstack 3 } // end of method T.print .method hidebysig static public void 'Main'() { .entrypoint .locals init ([0]value class 'X'[0...,0...,0...,0...] 't0') ldc.i4 5 ldc.i4 5 ldc.i4 5 ldc.i4 5 newobj instance void value class 'X'[0...,0...,0...,0...]::.ctor(int32,int32,int32,int32) stloc 0 // a ldloc 0 // a ldc.i4 1 ldc.i4 2 ldc.i4 3 ldc.i4 4 call instance value class 'X' & value class 'X'[0...,0...,0...,0...]::Address(int32,int32,int32,int32) ldloc 0 // a ldc.i4 4 ldc.i4 3 ldc.i4 2 ldc.i4 1 call instance value class 'X' & value class 'X'[0...,0...,0...,0...]::Address(int32,int32,int32,int32) call void 'T'::'f'(value class 'X'&,value class 'X'&) ldloc 0 // a ldc.i4 4 ldc.i4 4 ldc.i4 4 ldc.i4 4 call instance value class 'X' & value class 'X'[0...,0...,0...,0...]::Address(int32,int32,int32,int32) ldloc 0 // a ldc.i4 1 ldc.i4 2 ldc.i4 3 ldc.i4 4 call instance value class 'X' & value class 'X'[0...,0...,0...,0...]::Address(int32,int32,int32,int32) ldobj value class 'X' stobj value class 'X' ldloc 0 // a ldc.i4 1 ldc.i4 2 ldc.i4 3 ldc.i4 4 call instance value class 'X' & value class 'X'[0...,0...,0...,0...]::Address(int32,int32,int32,int32) ldobj value class 'X' call void 'T'::'print'(value class 'X') ldloc 0 // a ldc.i4 4 ldc.i4 3 ldc.i4 2 ldc.i4 1 call instance value class 'X' & value class 'X'[0...,0...,0...,0...]::Address(int32,int32,int32,int32) ldobj value class 'X' call void 'T'::'print'(value class 'X') ret .maxstack 6 } // end of method T.Main .method hidebysig static private void 'f'(value class 'X'& 'a',value class 'X'& 'b') { ldarg 0 // a ldfld int32 'X'::'a' ldc.i4 1 add .locals init ([0]int32 't0') stloc 0 // t0 ldarg 0 // a ldloc 0 // t0 stfld int32 'X'::'a' ldarg 0 // a ldc.i4 1 neg stfld int32 'X'::'b' ldarg 1 // b .locals init ([1]value class 'X' 't1') ldloca 1 // t1 ldc.i4 1 ldc.i4 2 call instance void 'X'::.ctor(int32,int32) ldloc 1 // t1 stobj value class 'X' ret .maxstack 4 } // end of method T.f .method hidebysig specialname rtspecialname public void .ctor() { ldarg.0 call instance void [mscorlib]System.Object::.ctor() ret .maxstack 1 } // end of constructor T.T } // end of class T