Errore del compilatore CS1939

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile passare la variabile di intervallo 'nome' come parametro out o ref.
Cannot pass the range variable 'name' as an out or ref parameter.

Una variabile di intervallo è una variabile di sola lettura introdotta in un'espressione di query e funge da identificatore per ogni elemento successivo in una sequenza di origine. Non può essere modificata in alcun modo, pertanto non vi è differenza se viene passata per ref o out. Nessuna delle due operazioni è valida.

Per correggere l'errore

  • Passare la variabile di intervallo per valore.

Esempio

Nell'esempio seguente viene generato l'errore CS1939:

// cs1939.cs
using System.Linq;
class Test
{
    public static void F(ref int i)
    {
    }
    public static void Main()
    {
        var list = new int[] { 0, 1, 2, 3, 4, 5 };
        var q = from x in list
                let k = x
                select Test.F(ref x); // CS1939
    }
}