я написал следующее небезопасным класс, который оборачивает указатель на INT:C# указатель и перемещение переменных типа значение
unsafe class PtrWrapper
{
public PtrWrapper(ref int val)
{
fixed (int* ptr = &val)
{
m_ptr = ptr;
}
}
public int Value
{
get { return *m_ptr; }
set { *m_ptr = value; }
}
int * m_ptr;
}
Я проверил это, и это, кажется, работает хорошо, но я бы просто читать reference на фиксированный еще раз, и это выглядит как все операции по указателю должно быть сделано в заявлении:
Без фиксированной, указатели на движимое управляемые переменные будут иметь мало пользы, так как сборка мусора может отн ocate переменные непредсказуемо.
Итак, возможно ли, что к моменту, когда я вызову значение Value, переводчик перемещается в память, а указатель указывает на что-то еще? Я знаю, что у меня проблема, если плакат выходит из сферы действия, но я объясню это тем, как я использую свой класс. Поэтому я спрашиваю о , переместив переменной типа значения, которая имеет , а не еще не вышла из области.