Ошибка компилятора CS0459
Невозможно получить адрес локальной переменной, доступной только для чтения
В языке C# существует три типичных сценария, формирующие локальные переменные только для чтения: foreach
, using
и fixed
. В каждом из этих случаев нельзя выполнять запись в локальную переменную только для чтения или получать ее адрес. Эта ошибка возникает, когда компилятор определяет, что вы пытаетесь получить адрес локальной переменной, доступной только для чтения.
В следующем примере возникает ошибка CS0459 при попытке принять адрес локальной переменной только для чтения в foreach
цикле и блоке fixed
инструкций:
// CS0459.cs
// compile with: /unsafe
class Program
{
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;
}
Примечание
Компилятор Roslyn был обновлен, и эта ошибка компилятора была удалена начиная с Visual Studio 2017 версии 15.5, поэтому предыдущий код успешно компилируется с этой версией и более поздними версиями.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: