在 .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、...)进行了特殊处理?