Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
Impossibile utilizzare i buffer di dimensione fissa in espressioni unfixed. Provare a utilizzare l'istruzione fixed.
You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.
Questo errore si verifica se il buffer di dimensione fissa viene utilizzato in un'espressione che coinvolge una classe non fixed. In fase di esecuzione, infatti, la classe unfixed può essere spostata per ottimizzare l'accesso alla memoria, causando errori durante l'utilizzo del buffer di dimensione fissa. Per evitare questo problema, utilizzare la parola chiave fixed nell'istruzione.
Esempio
Il seguente codice di esempio genera l'errore 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);
}
}