Int16 - bytes de capacidad en.net?
Por que :
short a=0;
Console.Write(Marshal.SizeOf(a));
muestra2
Pero si veo el código IL veo:
/*1*/ IL_0000: ldc.i4.0
/*2*/ IL_0001: stloc.0
/*3*/ IL_0002: ldloc.0
/*4*/ IL_0003: box System.Int16
/*5*/ IL_0008: call System.Runtime.InteropServices.Marshal.SizeOf
/*6*/ IL_000D: call System.Console.Write
El LDC en la línea # 1 indica:
Empuje 0 en la pila comoint32.
Así que debe haber4
bytes ocupados
PerosizeOf
muestra2
bytes ...
Que me estoy perdiendo aqui ? ¿Cuántos byte corto realmente toma en mem?
He escuchado sobre situaciones en las que hay un relleno de 4 bytes, por lo que sería más rápido tratar con ellos. ¿Es el caso también aquí?
(por favor ignore el syncRoot y el byte de la raíz del GC, solo pregunto sobre 2 contra 4)