Leer en inglés

Compartir a través de


Error del compilador CS0459

No se puede adquirir la dirección de una variable local de solo lectura

Hay tres escenarios comunes en el lenguaje C# que generan variables locales de solo lectura: foreach, usingy fixed. En cada uno de estos casos, no se permite escribir en la variable local de solo lectura ni tomar su dirección. Este error se genera cuando el compilador detecta que se está intentando tomar la dirección de una variable local de solo lectura.

Ejemplo

El siguiente ejemplo genera el error CS0459 cuando se intenta tomar la dirección de una variable local de solo lectura en un bucle foreach y en un bloque de instrucciones fixed:

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

Nota

El compilador de Roslyn se actualizó y este error del compilador se quitó a partir de Visual Studio 2017 versión 15.5, por lo que el código anterior debería compilarse correctamente con esta versión y las posteriores.