Číst v angličtině

Sdílet prostřednictvím


Chyba kompilátoru CS0459

Nelze převzít adresu místní proměnné jen pro čtení.

V jazyce C# existují tři běžné scénáře, které generují místní proměnné jen pro čtení: foreach, usinga fixed. V každém z těchto případů nemáte oprávnění zapisovat do místní proměnné jen pro čtení nebo převzít její adresu. Tato chyba se vygeneruje, když kompilátor zjistí, že se pokoušíte převzít adresu místní proměnné jen pro čtení.

Příklad

Následující příklad vygeneruje CS0459 při pokusu o převzetí adresy místní proměnné jen pro čtení ve foreach smyčce a v fixed bloku příkazu:

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

Poznámka

Kompilátor Roslyn byl aktualizován a tato chyba kompilátoru byla odebrána od sady Visual Studio 2017 verze 15.5, takže předchozí kód by se úspěšně zkompiloval s touto verzí a novější verzí.