Ошибка компилятора CS1666
Нельзя использовать буферы фиксированного размера в нефиксированных выражениях. Попробуйте использовать оператор fixed.
Эта ошибка возникает при использовании буфера фиксированного размера в выражении с участием экземпляра, который не является фиксированным. Среда выполнения может перемещать нефиксируемый экземпляр вокруг, чтобы оптимизировать доступ к памяти, что может привести к ошибкам при использовании буфера фиксированного размера. Чтобы избежать этой ошибки, используйте инструкциюfixed
.
Следующий пример приводит к возникновению ошибки CS1666.
// CS1666.cs
// compile with: /unsafe /target:library
unsafe struct S
{
public fixed int buffer[1];
}
unsafe class Test
{
S field = new S();
private bool example1()
{
return (field.buffer[0] == 0); // CS1666 error
}
private bool example2()
{
// OK
fixed (S* p = &field)
{
return (p->buffer[0] == 0);
}
}
private bool example3()
{
S local = new S();
return (local.buffer[0] == 0);
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: