Freigeben über


Compilerfehler CS1666

Sie können keine Puffer fester Größe in ungebundenen Ausdrücken verwenden. Verwenden Sie die fixed-Anweisung.

Dieser Fehler tritt auf, wenn Sie einen Puffer mit fester Größe in einem Ausdruck mit einer Instanz verwenden, die selbst nicht gebunden ist. Die Runtime kann die ungebundene Klasse verschieben, um den Speicherzugriff zu optimieren, was jedoch bei Verwendung eines Puffers fester Größe zu Fehlern führen kann. Um diesen Fehler zu vermeiden, verwenden Sie die fixed-Anweisung.

Beispiel

Im folgenden Beispiel wird CS1666 generiert:

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