в .Net целые числа являются типами значений, что означает, что они хранятся в стеке. Целые числа также являются классом (обычно System.Int32). У них есть такие методы, как CompareTo, Equals, ... Таким образом, они должны занимать в стеке более четырех байтов. Однако в приведенном ниже примере показано, что они занимают ровно 4 байта:
unsafe static void Main()
{
int a = 2, b = 4;
Console.WriteLine("Adress of a : {0}", (int)&a);
Console.WriteLine("Adress of b : {0}", (int)&b);
Console.WriteLine("Size of integer: {0}", (int)(&a) - (int)(&b));
}
Вывод:
Adress of a : 1372876
Adress of b : 1372872
Size of integer: 4
Обеспечивает ли среда CLR особую обработку целочисленных и других типов значений (float, long, double, ...)?