我希望能够使用Reflection.Emit创建一个多维数组,并设置其元素值。下面是C#代码示例:
创建数组的IL代码:
什么样的IL Generator.Emit()代码与这两个IL语句相对应?
int[,] nums = new int[2, 2];
nums[1, 1] = 2;
并转换为IL代码:
IL_0000: nop
IL_0001: ldc.i4.2
IL_0002: ldc.i4.2
IL_0003: newobj instance void int32[0..., 0...]::.ctor(int32, int32)
IL_0008: stloc.0
IL_0009: ldloc.0
IL_000a: ldc.i4.1
IL_000b: ldc.i4.1
IL_000c: ldc.i4.2
IL_000d: call instance void int32[0..., 0...]::Set(int32, int32, int32)
创建数组的IL代码:
newobj instance void int32[0..., 0...]::.ctor(int32, int32)
设置数组元素的IL代码:
call instance void int32[0..., 0...]::Set(int32, int32, int32)
什么样的IL Generator.Emit()代码与这两个IL语句相对应?
[,]
和[][]
分别指代两种不同类型的数组,请参见这个问题获取更多关于它们之间的差异信息。 - poke