Int16 - объем байт в .net?
Почему :
short a=0;
Console.Write(Marshal.SizeOf(a));
шоу2
Но если я вижу код IL, я вижу:
/*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
НРС в строке № 1 указывает:
Вставьте 0 в стек какint32.
Так должно быть4
байты заняты.
НоsizeOf
шоу2
байт ...
Что мне здесь не хватает? сколько байт на самом деле занимает короткое в памяти?
Мы слышали о ситуациях, когда есть заполнение до 4 байтов, чтобы с ним было быстрее иметь дело. это так и здесь?
(пожалуйста, игнорируйте syncRoot и байт корневого флага GC i 'м просто спрашиваю про 2 против 4)