Erreur du compilateur CS1666
Vous ne pouvez pas utiliser des mémoires tampons de taille fixe contenues dans des expressions non fixed. Essayez d’utiliser l’instruction fixed.
Cette erreur se produit si vous utilisez la mémoire tampon de taille fixe dans une expression impliquant une instance qui n’est pas fixe elle-même. Le runtime est libre de déplacer l’instance non fixe pour optimiser l’accès à la mémoire, ce qui peut entraîner des erreurs quand vous utilisez de la mémoire tampon de taille fixe. Pour éviter cette erreur, utilisez l’instruction fixed
.
L’exemple suivant génère l’erreur 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);
}
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :