Почему я не могу изменить результат конвертации в ящик?
struct Point
{
public int x;
public int y;
}
void Main()
{
Point p;
p.x = 1;
p.y = 1;
Object o = p;
((Point) o).x = 4; // error
((Point) o).x = 5; // error
((Point) o).x = 6; // error
p = (Point) o // expect 6
}
Почему нетт компилировать в
ldloc.1 // o
unbox Point
ldc.i4.4
stfld Point.x
Где C ++ CLI позволяет это.
Для тех, кто нене знаю,unbox
являетсяне требуется создать копиютипы значенийвместо этого он помещает указатель на значение в стек. Только назначение создаст копию.