Errore del compilatore CS0459

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile ottenere l'indirizzo di una variabile locale di sola lettura.
Cannot take the address of a read-only local variable

Nel linguaggio C# esistono tre scenari che generano variabili locali di sola lettura: foreach, using e fixed. In ciascuno di questi casi non è consentito eseguire operazioni di scrittura nella variabile locale di sola lettura, né ottenere l'indirizzo di quest'ultima. Questo errore si verifica quando il compilatore rileva un tentativo di ottenere l'indirizzo di una variabile locale di sola lettura.

Esempio

Quando viene effettuato il tentativo di ottenere l'indirizzo di una variabile locale di sola lettura in un ciclo foreach e in un blocco di istruzioni fixed, il seguente codice di esempio genera l'errore CS0459.

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