Erro do Compilador CS1666
Você não pode usar buffers de tamanho fixo contidos em expressões não fixas. Tente usar a instrução fixa.
Este erro ocorrerá se você usar o buffer de tamanho fixo em uma expressão que envolve uma instância que não é fixa. O runtime é livre para mover a instância não fixa para otimizar o acesso à memória, o que pode levar a erros ao usar o buffer de tamanho fixo. Para impedir esse erro, use a instrução fixed
.
O exemplo a seguir gera 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);
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: