Поделиться через


Ошибка компилятора CS0213

Обновлен: Ноябрь 2007

Сообщение об ошибке

Нельзя использовать оператор fixed для получения адреса уже зафиксированного выражения
You cannot use the fixed statement to take the address of an already fixed expression

Локальная переменная в методе unsafe или параметре уже зафиксирована (в стеке), поэтому невозможно получить адрес любой из этих двух переменных в выражении fixed. Дополнительные сведения см. в разделе Небезопасный код и указатели (Руководство по программированию в C#).

Пример

Следующий пример проводит к возникновению ошибки CS0213.

// CS0213.cs
// compile with: /unsafe
public class MyClass
{
   unsafe public static void Main()
   {
      int i = 45;
      fixed (int *j = &i) { }  // CS0213
      // try the following line instead
      // int* j = &i;

      int[] a = new int[] {1,2,3};
      fixed (int *b = a)
      {
         fixed (int *c = b) { }  // CS0213
         // try the following line instead
         // int *c = b;
      }
   }
}