Ler em inglês

Compartilhar via


Erro do Compilador CS0459

Não é possível usar o endereço de uma variável local somente leitura

Há três cenários comuns na linguagem C# que geram variáveis locais somente leitura: foreach, using e fixed. Em cada um desses casos, você não tem permissão para gravar na variável local somente leitura ou usar seu endereço. Esse erro é gerado quando o compilador percebe que você está tentando usar o endereço de uma variável local somente leitura.

Exemplo

O exemplo a seguir gera CS0459 quando é feita uma tentativa de usar o endereço de uma variável local somente leitura em um foreach loop e em um fixed bloco de instrução:

C#
// 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;
}

Observação

O compilador Roslyn foi atualizado e esse erro do compilador foi removido a partir do Visual Studio 2017 versão 15.5, de modo que o código anterior seria compilado com êxito com essa versão e posterior.