Я хочу создать многомерный массив, используя Reflection.Emit и установить его. Как следующий C# код:Как создать многомерный массив с помощью Reflection.Emit
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)
Ил-код для создания массива:
newobj instance void int32[0..., 0...]::.ctor(int32, int32)
И код IL установить элемент массива за :
call instance void int32[0..., 0...]::Set(int32, int32, int32)
Какой код IL Generator.Emit() соответствует этим двум предложениям IL?
Благодарю вас, я написал [,] как [] [] поначалу и получил неправильный код IL, теперь я вижу –
'[,]' и '[] []' ссылаются на два разных типа массивов, см. [ этот вопрос] (http://stackoverflow.com/questions/597720/what-are-the-differences-between-a-multidimensional-array-and-an-array-of-arrays) для получения дополнительной информации о различиях. – poke