Ler em inglês

Partilhar via


Erro do compilador CS0459

Não é possível tomar 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, usinge fixed. Em cada um desses casos, você não tem permissão para gravar na variável local somente leitura ou para tomar seu endereço. Este erro é gerado quando o compilador percebe que você está tentando tomar o endereço de uma variável local somente leitura.

Exemplo

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

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

Nota

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