.assembly '4darray' { } .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'(int32 'x') { ldstr "{0}" ldarg 0 // x box int32 call void [mscorlib]System.Console::'WriteLine'(string,object) ret .maxstack 2 } // end of method T.print .method hidebysig static public void 'Main'() { .entrypoint .locals init ([0]int32[0...,0...,0...,0...] 't0') ldc.i4 5 ldc.i4 5 ldc.i4 5 ldc.i4 5 newobj instance void int32[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 int32 & int32[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 int32 & int32[0...,0...,0...,0...]::Address(int32,int32,int32,int32) call void 'T'::'f'(int32&,int32&) ldloc 0 // a ldc.i4 4 ldc.i4 4 ldc.i4 4 ldc.i4 4 ldloc 0 // a ldc.i4 1 ldc.i4 2 ldc.i4 3 ldc.i4 4 call instance int32 int32[0...,0...,0...,0...]::Get(int32,int32,int32,int32) call instance void int32[0...,0...,0...,0...]::Set(int32,int32,int32,int32,int32) ldloc 0 // a ldc.i4 1 ldc.i4 2 ldc.i4 3 ldc.i4 4 call instance int32 int32[0...,0...,0...,0...]::Get(int32,int32,int32,int32) call void 'T'::'print'(int32) ldloc 0 // a ldc.i4 4 ldc.i4 3 ldc.i4 2 ldc.i4 1 call instance int32 int32[0...,0...,0...,0...]::Get(int32,int32,int32,int32) call void 'T'::'print'(int32) .locals init ([1]int32 't1') ldc.i4 0 stloc 1 // sum .locals init ([2]int32 't2') .locals init ([3]class [mscorlib]System.Collections.IEnumerator 't3') ldloc 0 // a callvirt instance class [mscorlib]System.Collections.IEnumerator [mscorlib]System.Array::'GetEnumerator'() stloc 3 // t3 .try { br $2 $1: ldloc 3 // t3 callvirt instance object [mscorlib]System.Collections.IEnumerator::'get_Current'() unbox int32 ldind.i4 stloc 2 // i ldloc 1 // sum ldloc 2 // i add .locals init ([4]int32 't4') stloc 4 // t4 ldloc 4 // t4 stloc 1 // sum $2: ldloc 3 // t3 callvirt instance bool [mscorlib]System.Collections.IEnumerator::'MoveNext'() brtrue $1 $3: leave $5 } finally { ldloc 3 // t3 .locals init ([5]class [mscorlib]System.IDisposable 't5') isinst class [mscorlib]System.IDisposable stloc 5 // t5 ldloc 5 // t5 brfalse $6 ldloc 5 // t5 callvirt instance void [mscorlib]System.IDisposable::'Dispose'() $6: endfinally } // end .try $5: $4: ldstr "{0} {1}" ldloc 1 // sum box int32 ldloc 0 // a call instance int32 [mscorlib]System.Array::'get_Length'() box int32 call void [mscorlib]System.Console::'WriteLine'(string,object,object) ret .maxstack 10 } // end of method T.Main .method hidebysig static private void 'f'(int32& 'a',int32& 'b') { ldarg 0 // a ldind.i4 ldc.i4 1 add .locals init ([0]int32 't0') stloc 0 // t0 ldarg 0 // a ldloc 0 // t0 stind.i4 ldarg 1 // b ldc.i4 2 stind.i4 ret .maxstack 2 } // 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