Ошибка компилятора 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;
}