Error del compilador CS0459

Actualización: noviembre 2007

Mensaje de error

No se puede adquirir la dirección de la variable local de sólo lectura
Cannot take the address of a read-only local variable

Hay tres escenarios habituales en el lenguaje C# que generan variables locales de sólo lectura: foreach, using y fixed. En ninguno de estos casos se puede escribir en la variable local de sólo lectura ni utilizar su dirección. Se genera este error cuando el compilador detecta que se está intentando utilizar la dirección de una variable local de sólo lectura.

Ejemplo

El siguiente ejemplo genera el error CS0459 cuando se intenta utilizar la dirección de una variable local de sólo lectura en un bucle foreach y en un bloque de instrucciones 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;
}