Lezen in het Engels

Delen via


Compilerfout CS1666

U kunt geen buffers met vaste grootte gebruiken die zijn opgenomen in niet-opgeloste expressies. Probeer de vaste instructie te gebruiken.

Deze fout treedt op als u de buffer met vaste grootte gebruikt in een expressie die betrekking heeft op een exemplaar dat niet zelf is opgelost. De runtime is vrij om het niet-opgeloste exemplaar te verplaatsen om geheugentoegang te optimaliseren, wat kan leiden tot fouten bij het gebruik van de buffer met vaste grootte. Gebruik de fixed instructie om deze fout te voorkomen.

Opmerking

In het volgende voorbeeld wordt CS1666 gegenereerd.

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