Błąd kompilatora CS0459
Nie można pobrać adresu zmiennej lokalnej tylko do odczytu
Istnieją trzy typowe scenariusze w języku C#, które generują zmienne lokalne tylko do odczytu: foreach
, using
i fixed
. W każdym z tych przypadków nie można zapisywać w zmiennej lokalnej tylko do odczytu ani na jego adres. Ten błąd jest generowany, gdy kompilator zdaje sobie sprawę, że próbujesz podjąć adres zmiennej lokalnej tylko do odczytu.
Poniższy przykład generuje CS0459 podczas próby podjęcia adresu zmiennej lokalnej tylko do odczytu w foreach
pętli i w fixed
bloku instrukcji:
// 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;
}
Uwaga
Kompilator Roslyn został zaktualizowany i ten błąd kompilatora został usunięty, począwszy od programu Visual Studio 2017 w wersji 15.5, więc poprzedni kod zostanie pomyślnie skompilowany z tą wersją i nowszymi wersjami.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: