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


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

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

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

Невозможно получить адрес предназначенной только для чтения локальной переменной
Cannot take the address of a read-only local variable

В языке C# существует три распространенных ситуации, в которых генерируются предназначенные только для чтения локальные переменные: foreach, using и fixed. В каждом из этих случаев запись в предназначенную только для чтения локальную переменную или получение ее адреса недопустимы. Эта ошибка генерируется, когда компилятор определяет, что выполняется попытка получить адрес предназначенной только для чтения локальной переменной.

Пример

Следующий пример приводит к возникновению ошибки CS0459 при попытке получить адрес предназначенной только для чтения переменной в цикле foreach и в блоке оператора fixed.

// CS0459.cs
// compile with: /unsafe

class A
{
    public unsafe void M1()
    {
        int[] ints = new int[] { 1, 2, 3 };
        foreach (int i in ints)
        {
            int *j = &i;  // CS0459
        }

        fixed (int *i = &_i)
        {
            int **j = &i;  // CS0459
        }
    }

    private int _i = 0;
}