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
, using
und 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.
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.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: