Прочитать на английском

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


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

Для получения адреса ранее зафиксированного выражения нельзя использовать оператор fixed

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

Пример

Следующий пример приводит к возникновению ошибки 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;  
      }  
   }  
}