Leer en inglés

Compartir a través de


Error del compilador CS1666

No puede usar los búferes de tamaño fijo contenidos en expresiones de tipo unfixed. Pruebe a usar la instrucción fixed.

Este error se produce si usa el búfer de tamaño fijo en una expresión que implica una instancia que no es de tipo fixed. El tiempo de ejecución es libre de mover la instancia que es de tipo unfixed para optimizar el acceso a la memoria, lo que puede provocar errores al usar el búfer de tamaño fijo. Para evitar este error, use la instrucción fixed.

Ejemplo

El ejemplo siguiente genera la advertencia CS1666:

C#
// 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);
   }
}