共用方式為


編譯器錯誤 CS1666

更新:2007 年 11 月

錯誤訊息

您不能使用包含在 unfixed 運算式中的固定大小緩衝區。請嘗試使用 fixed 陳述式。

如果您在運算式中使用固定大小的緩衝區,而運算式同時又有非固定的類別,便會發生這個錯誤。由於執行階段可自由移動非固定的類別以最佳化記憶體存取,因此可能會在使用固定大小緩衝區時導致錯誤發生。若要避免這個錯誤,請在陳述式上使用 fixed 關鍵字。

範例

下列範例會產生 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); 
   } 
}