从MSDN unbox
确实
- 对象引用被压入堆栈。
- 对象引用从堆栈中弹出并拆箱到值类型指针。
- 值类型指针被压入堆栈。
在这种情况下,对象引用不是与值类型指针相同吗?(这两个值都是堆中值类型的地址,因为值类型是对象中的唯一成员)?
例如,一个元素数组:数组的地址与数组的第一个元素的地址相同。
void Main()
{
int[] test = new []{1};
unsafe
{
fixed (int* x = test)
{
fixed (int* y = &test[0])
{
Console.WriteLine((int)x);
Console.WriteLine((int)y); // They are equal
}
}
}
}