Я наткнулся на следующий код на msdn:
unsafe static void SquarePtrParam (int* p)
{
*p *= *p;
}
unsafe static void Main()
{
Point pt = new Point();
pt.x = 5;
pt.y = 6;
// Pin pt in place:
fixed (int* p = &pt.x)
{
SquarePtrParam (p);
}
// pt now unpinned.
Console.WriteLine ("{0} {1}", pt.x, pt.y);
}
Мне просто интересно, мы напрямую обращаемся к указателю в функции SquarePtrParam
, наследует ли он информацию о том, что массив исправлен из вызывающего метода?
Почему бы нам не указать явно fixed
локально в SquarePtrParam
.
Думаю, мне не помешали бы некоторые уточнения по поводу этого оператора fixed
.