Share via


Compilerfehler CS0459

Die Adresse einer schreibgeschützten lokalen Variablen kann nicht abgerufen werden.

Es gibt drei allgemeine Szenarien in der Programmiersprache C#, durch die schreibgeschützte lokale Variablen generiert werden: foreach, usingund fixed. In jedem dieser Fälle ist es unzulässig, in die schreibgeschützte lokale Variable zu schreiben oder deren Adresse zu übernehmen. Dieser Fehler wird generiert, wenn der Compiler erkennt, dass Sie versuchen, die Adresse einer schreibgeschützten lokalen Variablen zu übernehmen.

Beispiel

Im folgenden Beispiel wird beim Versuch, die Adresse einer schreibgeschützten lokalen Variablen in einer foreach-Schleife und in einem fixed-Anweisungsblock zu übernehmen, CS0459 generiert:

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

Hinweis

Der Roslyn-Compiler wurde aktualisiert. Dieser Compilerfehler wurde ab Visual Studio 2017, Version 15.5, entfernt, sodass der vorherige Code ab dieser Version erfolgreich kompiliert werden konnte.